标签: session

ASP.Net MVC控制器构造函数中的会话为null

为什么Session在控制器的构造函数中为null?它可以从Action方法访问.据推测,因为MVC路由框架负责新建一个Controller,所以它当时没有(重新)实例化Session.

有谁知道这是否是设计的,如果是的话,为什么?

[我已设法通过使用延迟加载模式来解决问题.]

asp.net-mvc session

84
推荐指数
4
解决办法
6万
查看次数

由于Django不活动,如何使会话到期?

我们的Django应用程序具有以下会话管理要求.

  1. 当用户关闭浏览器时,会话将过期.
  2. 会话在一段时间不活动后过期.
  3. 检测会话何时因不活动而到期并向用户显示适当的消息.
  4. 在非活动期结束前几分钟警告即将到来的会话到期的用户.连同警告,为用户提供扩展会话的选项.
  5. 如果用户正在应用程序中处理不涉及发送到服务器的请求的长业务活动,则会话不得超时.

在阅读了文档,Django代码和一些与此相关的博客文章后,我提出了以下实现方法.

要求1
通过将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,可以轻松实现此要求.

要求2
我已经看到一些建议使用SESSION_COOKIE_AGE来设置会话到期时间.但是这种方法存在以下问题.

  • 即使用户正在使用该应用程序,该会话也始终在SESSION_COOKIE_AGE结束时到期.(这可以通过使用自定义中间件在每个请求上将会话到期设置为SESSION_COOKIE_AGE来防止,或者通过将SESSION_SAVE_EVERY_REQUEST设置为true来保存每个请求的会话.但是由于使用了SESSION_COOKIE_AGE,下一个问题是不可避免的.)

  • 由于cookie的工作方式,SESSION_EXPIRE_AT_BROWSER_CLOSE和SESSION_COOKIE_AGE是互斥的,即cookie在浏览器关闭或指定的到期时间到期.如果使用SESSION_COOKIE_AGE并且用户在cookie过期之前关闭浏览器,则会保留cookie并重新打开浏览器将允许用户(或任何其他人)进入系统而无需重新进行身份验证.

  • Django仅依赖于存在的cookie来确定会话是否处于活动状态.它不会检查与会话一起存储的会话到期日期.

可以使用以下方法来实现此要求并解决上述问题.

  • 不要设置SESSION_COOKIE_AGE.
  • 将会话的到期日期设置为每个请求的"当前时间+不活动时间段".
  • 覆盖SessionMiddleware中的process_request并检查会话是否到期.如果会话已过期,请将其丢弃.

要求3
当我们检测到会话已过期时(在上面的自定义SessionMiddleware中),在请求上设置一个属性以指示会话到期.此属性可用于向用户显示适当的消息.

要求4
使用JavaScript检测用户不活动,提供警告以及扩展会话的选项.如果用户希望扩展,则向服务器发送保持活动脉冲以扩展会话.

要求5
使用JavaScript检测用户活动(在长期业务操作期间)并向服务器发送保持活动脉冲以防止会话过期.


上面的实现方法似乎很精细,我想知道是否有一个更简单的方法(特别是对于要求2).

任何见解都将受到高度赞赏.

python django cookies session

84
推荐指数
5
解决办法
5万
查看次数

与Redis存储会话有多安全?

我目前正在使用MySql来存储我的会话.它工作得很好,但有点慢.

我被要求使用Redis,但我想知道这是不是一个好主意,因为我听说Redis延迟了写操作.我有点害怕,因为会议需要是实时的.

有谁遇到过这样的问题?

session redis

84
推荐指数
3
解决办法
5万
查看次数

PHP中的session_unset()和session_destroy()有什么区别?

php.net文档:

session_destroy - 销毁注册到会话的所有数据

session_unset - 释放所有会话变量

我的三个部分问题是:

这两个功能看起来非常相似.
这两者之间究竟有什么区别?

两者似乎都删除了注册到会话的所有变量.它们中的任何一个实际上都会破坏会话本身吗 如果没有,你如何做到这一点(破坏会话本身).

这两个函数都没有删除客户端的会话cookie,这是正确的吗?

php session session-cookies

83
推荐指数
4
解决办法
6万
查看次数

Rails会议当前的做法

任何人都有任何关于Rails和会话的"最佳实践"技巧?Rails 3的默认会话类型仍然是CookieStore,对吧?我使用SqlSessionStore已经有一段时间了,它运行良好,但我可能会偏离它,转而支持CookieStore.

将CookieStore用于敏感信息仍然不是一个好主意,即使是盐渍信息,还是更好地存储在数据库中?

ruby cookies session ruby-on-rails

82
推荐指数
3
解决办法
4万
查看次数

如何在web方法中访问会话?

我可以在一个内部使用会话值WebMethod吗?

我尝试过使用System.Web.Services.WebMethod(EnableSession = true)但是我无法访问Session参数,如下例所示:

    [System.Web.Services.WebMethod(EnableSession = true)]
    [System.Web.Script.Services.ScriptMethod()]
    public static String checaItem(String id)
    { 
        return "zeta";
    }
Run Code Online (Sandbox Code Playgroud)

这是调用web方法的JS:

    $.ajax({
        type: "POST",
        url: 'Catalogo.aspx/checaItem',
        data: "{ id : 'teste' }",
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert(data);
        }
    });
Run Code Online (Sandbox Code Playgroud)

c# session

82
推荐指数
2
解决办法
9万
查看次数

如何在ExpressJS中结束会话

我觉得这必须埋在文档中的某处,但我找不到它.

你如何在ExpressJS中关闭或结束或杀死(无论如何)会话?

session node.js express

82
推荐指数
7
解决办法
10万
查看次数

如何与Socket.IO 1.x和Express 4.x共享会话?

如何与Socket.io 1.0和Express 4.x共享会话?我使用Redis商店,但我认为这无关紧要.我知道我必须使用中间件来查看cookie和获取会话,但不知道如何.我搜索但找不到任何工作

    var RedisStore = connectRedis(expressSession);
    var session = expressSession({
        store: new RedisStore({
            client: redisClient
        }),
        secret: mysecret,
        saveUninitialized: true,
        resave: true
    });
    app.use(session);

    io.use(function(socket, next) {
        var handshake = socket.handshake;
        if (handshake.headers.cookie) {
            var str = handshake.headers.cookie;
            next();
        } else {
            next(new Error('Missing Cookies'));
        }
    });
Run Code Online (Sandbox Code Playgroud)

session node.js express socket.io

82
推荐指数
3
解决办法
4万
查看次数

使codeigniter网站成为多语言的最佳方式.从lang数组调用取决于lang会话?

我正在研究时间和工作时间,但我找不到任何明确,有效的方法来制作它:/

我有一个英文的codeigniter基础网站,我现在必须添加波兰语.根据访客选择,以2种语言制作我的网站的最佳方法是什么?

有没有办法为每种语言创建数组文件,并在视图文件中调用它们取决于来自lang选择的会话?我不想使用数据库.

感谢帮助!我已经没过截止日期了:/谢谢!!

arrays session multilingual codeigniter

81
推荐指数
3
解决办法
12万
查看次数

如何使用PHP正确添加CSRF令牌

我正在尝试为我网站上的表单添加一些安全性.其中一种形式使用AJAX,另一种形式是直接的"联系我们"形式.我正在尝试添加CSRF令牌.我遇到的问题是令牌只在某些时候出现在HTML"值"中.剩下的时间,值是空的.这是我在AJAX表单上使用的代码:

PHP:

if (!isset($_SESSION)) {
    session_start();
$_SESSION['formStarted'] = true;
}
if (!isset($_SESSION['token']))
{$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;

}
Run Code Online (Sandbox Code Playgroud)

HTML

 <form>
//...
<input type="hidden" name="token" value="<?php echo $token; ?>" />
//...
</form>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

php security session csrf

81
推荐指数
2
解决办法
10万
查看次数