我在我的应用程序中使用了Membership功能,并且我有以下logIn代码:
if (!Membership.ValidateUser(email, password))
{
ViewBag.Message = "E-mail ou senha estão incorretos.";
return View();
}
else
{
FormsAuthentication.Authenticate(email, password);
var keep = keepMeLoggedIn == "true,false" ? true : false;
FormsAuthentication.SetAuthCookie(email, keep);
return Redirect("~/Home/Mural");
}
从昨天到现在,当我再次打开我的应用程序时,我没有登录... 我听说当你生成一个持久性cookie时,会话永远不会过期,这是真的吗?我做错了什么?我应该在web.config中添加一些其他信息吗?
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="~/Usuario/Login" protection="All" timeout="360" cookieless="UseDeviceProfile" />
</authentication>
有人可以帮忙吗?
答案 0 :(得分:1)
var keep = keepMeLoggedIn == "true,false" ? true : false;
这段代码让我有点担心。但是,我认为这不会导致问题。
但是,持久性cookie有一个到期(超时),它在您显示的身份验证标记中确定。
会话cookie和持久性cookie之间的唯一区别是,如果用户关闭浏览器或超时,会话cookie将过期。持久cookie只会在超时时到期。
SetAuthCookie的第二个参数是否是否创建持久性cookie。如果为false,则为会话,如果为true,则为持久性。