在我的网络应用程序(asp.net mvc)中,我有一个限制区域。在我的模型中,我有一个名为“User”的实体代表用户可以在Web应用程序中进行登录/注销。我已经使用表单身份验证来登录/退出我的用户,一切正常,但是,我想知道,在用户会话期间是否有任何方法可以保存实体(用户登录的实体)?
有没有最好的实践呢?是否要使表单autentication的超时与HttpSession兼容,还是有其他方法可以做到这一点?
我正在使用NHibernate
由于
干杯
答案 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方法让它同时过期。