ASP.Net MVC App中的用户会话

时间:2010-06-30 20:33:06

标签: asp.net-mvc nhibernate session login forms-authentication

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

有没有最好的实践呢?是否要使表单autentication的超时与HttpSession兼容,还是有其他方法可以做到这一点?

我正在使用NHibernate

由于

干杯

1 个答案:

答案 0 :(得分:0)

取决于。

依赖会话登录状态是不安全的,因为它不耐用。 One Recycle and poof,你的Session已经不见了。

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

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

        base.Initialize(requestContext);
    }

超时无关紧要,因为如果他们无法进入应用程序,他们无论如何都看不到他们的会话。但是如果你坚持,你总是可以使用Session.Timeout方法让它同时过期。