cho*_*bo2 8 asp.net asp.net-mvc
您好
我正在使用asp.net mvc和asp.net会员资格.
我希望有一个复选框,如果点击,可以让用户登录2周(除非他们清除他们的cookie).
所以我知道他们是
FormsAuthentication.SetAuthCookie(userName,createPersistentCookie)
但我不知道如何设置2周保留.
我重写了大部分会员资料.所以我不使用Create()和VerifyUser()之类的东西.
小智 17
向cookie和数据库添加散列键或随机字符串(两者都是相同的键).如果cookie和数据库值相同,则当用户启动新会话时,请再次签名.当用户达到两周时,使用cronjob(Unix)或计划任务(Windows)从数据库中删除密钥.
警告:不要依赖cookie过期日期,因为人们可以破解他们的浏览器.
规则:永远,永远信任您的任何用户!
您可以在 web.config 中设置全局会话超时(值以分钟为单位),例如。
<system.web>
<authentication mode="Forms">
<forms timeout="20160"/>
</authentication>
</system.web>
Run Code Online (Sandbox Code Playgroud)
这将适用于所有经过身份验证的用户。如果您想使用“记住我”功能,那么您需要编写自己的代码来设置 cookie/ticket。像这样的东西(取自here):
protected void Page_Load()
{
if (Request.Cookies["username"] == null || Request.Cookies["username"].Value.ToString().Trim() == "")
{
Login1.RememberMeSet = true;
}
else
{
Login1.UserName = Request.Cookies["username"].Value.ToString().Trim();
Login1.RememberMeSet = true;
}
}
protected void RememberUserLogin()
{
// Check the remember option for login
if (Login1.RememberMeSet == true)
{
HttpCookie cookie = new HttpCookie("username");
cookie.Value = Login1.UserName.Trim();
cookie.Expires = DateTime.Now.AddHours(2);
HttpContext.Current.Response.AppendCookie(cookie);
Login1.RememberMeSet = true;
}
else if (Login1.RememberMeSet == false)
{
HttpContext.Current.Response.Cookies.Remove("username");
Response.Cookies["username"].Expires = DateTime.Now;
Login1.RememberMeSet = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7772 次 |
| 最近记录: |