Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NETMVC应用程序中的用户会话_Asp.net Mvc_Nhibernate_Session_Login_Forms Authentication - Fatal编程技术网

Asp.net mvc ASP.NETMVC应用程序中的用户会话

Asp.net mvc ASP.NETMVC应用程序中的用户会话,asp.net-mvc,nhibernate,session,login,forms-authentication,Asp.net Mvc,Nhibernate,Session,Login,Forms Authentication,在我的web应用程序(asp.net mvc)中,我有一个限制区域。在我的模型中,我有一个名为“User”的实体,表示用户可以在web应用程序中进行登录/注销。我已经使用表单身份验证来登录/注销我的用户,一切正常,但我想知道,在用户会话期间,是否有任何方法可以保存(已登录用户的)实体 有什么最好的做法可以做到这一点吗?是否使表单自动验证的超时与HttpSession兼容,或者是否有其他方法可以做到这一点 我用的是NHibernate 谢谢 干杯视情况而定 依赖会话获取登录状态是不安全的,因为它不

在我的web应用程序(asp.net mvc)中,我有一个限制区域。在我的模型中,我有一个名为“User”的实体,表示用户可以在web应用程序中进行登录/注销。我已经使用表单身份验证来登录/注销我的用户,一切正常,但我想知道,在用户会话期间,是否有任何方法可以保存(已登录用户的)实体

有什么最好的做法可以做到这一点吗?是否使表单自动验证的超时与HttpSession兼容,或者是否有其他方法可以做到这一点

我用的是NHibernate

谢谢

干杯

视情况而定

依赖会话获取登录状态是不安全的,因为它不持久。循环一次,你的会话就结束了

我要做的是在会话中存储非重要的数据,比如用户的名字和姓氏,或者一些关于他们的缓存数据,这样我就不必在数据库中查询这些数据。通常我所做的是在应用程序的登录部分设置一个逻辑,在会话中抛出这些有用的信息。然后在Initialize方法中,我调用相同的逻辑以确保会话信息可用。如果不是,我就把它加回去

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        if( Session["MyIdentityDTOKey"] == null )
            GoThrowThingsInTheSession();

        base.Initialize(requestContext);
    }

超时应该无关紧要,因为如果他们不能进入应用程序,他们无论如何也看不到自己的会话。但是,如果您坚持,您可以始终使用该方法使其同时过期。

有趣的是,除了在global.asax
session\u Start
中初始化会话变量外,我使用session的方式与之类似。那不是最好的地方吗?太好了,我试试看!初始化方法应该在控制器中吗?还是我的控制器基类?谢谢