- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有人可以向我解释 ASP.NET Forms 身份验证的工作原理吗,因为我似乎不明白它,而且我总是被注销。
目前,我有用户名、密码和“保持登录状态”复选框。根据这些值,我创建了一个票证和 cookie,如下所示:
// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,email,DateTime.UtcNow,DateTime.UtcNow.AddMinutes(30),remember,String.Empty);
// Encrypt ticket
string cookie_contents = FormsAuthentication.Encrypt(ticket);
// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,cookie_contents);
if (remember) {
cookie.Expires = DateTime.UtcNow.AddDays(90);
}
cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.Secure = true;
// Add cookie to response
Response.Cookies.Add(cookie);
我希望使用此代码可以登录我的网站,并假设我选中“保持登录状态”以确保我保持登录状态至少 90 天?
然而,我看到的是我在首次登录后至少 30 分钟后被注销(这是为票证预留的时间?)。
cookie 过期和票证过期有什么区别,我如何保持自己的签名。我是否需要为 cookie 和 ticket 设置 90 天?
最佳答案
如果可以避免,请不要直接操作 cookie。您可以使用 FormsAuthentication.SetAuthCookie(username, persistent)
来让用户登录。这里的持久意味着“不使用 session cookie”。
然后您应该在 web.config 中指定 cookie 过期时间
<system.web>
<authentication mode="Forms">
<forms timeout="50000000" slidingExpiration="true"/>
</authentication>
</system.web>
滑动过期意味着每次请求都会更新 cookie。超时以分钟为单位,所以这个例子非常高:)
看看这个问题和 Scott Gu 博客的链接:Forms Authentication Cookie Expiration
关于c# - ASP.NET 表单例份验证过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370142/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!