首页 新闻 搜索 专区 学院

请问 cookie 跟 Request.IsAuthenticated 之间是什么关系?

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-07 09:46

我的登录代码如下:

var time =  DateTime.Now.AddDays(14);
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, "1", DateTime.Now, time, true, "normal", FormsAuthentication.FormsCookiePath);
string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
UserCookie.Expires = Ticket.Expiration;
UserCookie.Path = Ticket.CookiePath;
Context.Response.Cookies.Add(UserCookie);

不能实现两周免登录,但我现在打开页面,显示未登录,我用插件查看cookie却是这样的:

下面的过期时间显示的是4月10号,这个是对的,但不知道为什么

Request.IsAuthenticated

却是false

草根程序猿的主页 草根程序猿 | 初学一级 | 园豆:129
提问于:2012-04-06 11:39
< >
分享
最佳答案
1

Request.IsAuthenticated是根据web.config中的cookie设置进行判断的,比如:

    <authentication mode="Forms">
<forms name="cookieName" loginUrl="login.aspx" protection="All" timeout="43200" path="/" />
</authentication>

使用Forms验证,登录后写cookie的代码很简单:

FormsAuthentication.SetAuthCookie(username, true);

这里的cookie设置也是由web.config中的设置决定的。


收获园豆:10
dudu | 高人七级 |园豆:36426 | 2012-04-06 16:45

上面代码中对cookie的过期时间进行了设置,那么在web.config中要不要再定义timeout呢,有没有冲突

草根程序猿 | 园豆:129 (初学一级) | 2012-04-06 22:10

@菜鸟程序猿: 两者选一

dudu | 园豆:36426 (高人七级) | 2012-04-06 22:27
其他回答(2)
0

登录过么?

小彬 | 园豆:947 (小虾三级) | 2012-04-06 12:13

前几天是登录过

支持(0) 反对(0) 草根程序猿 | 园豆:129 (初学一级) | 2012-04-06 13:19
0

webconfig 中配置了沒有呢

無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-06 12:53

要怎么配置?

支持(0) 反对(0) 草根程序猿 | 园豆:129 (初学一级) | 2012-04-06 13:19

@菜鸟程序猿:     <authentication mode="Forms">
      <!-- RSU: 在Production環境下記得需要把 requireSSL設定成true -->
      <forms loginUrl="~/Auth/Login.aspx" name=".SFXWEB" defaultUrl="Main.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true">
      </forms>
    </authentication>

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-06 14:07

@無限遐想: 上面代码中对cookie的过期时间进行了设置,那么在web.config中要不要再定义timeout呢,有没有冲突

支持(0) 反对(0) 草根程序猿 | 园豆:129 (初学一级) | 2012-04-06 22:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册