我想模拟CSDN的“两周内不需要登陆”的功能,在login.aspx中有如下保存COOKIES的值的代码:Dim authTicket As FormsAuthenticationTicket
If Me.CheckTime.Checked = True Then
authTicket = New FormsAuthenticationTicket(1, stu_name, DateTime.Now, DateTime.Now.AddDays(14), false, role)
'roles是一个角色字符串数组(),两周内不需要重复登陆
Else
authTicket = New FormsAuthenticationTicket(1, stu_name, DateTime.Now, DateTime.Now.AddMinutes(120), false, role)'只保存两个小时
End If
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket) '加密 '存入Cookie()
Dim authCookie As HttpCookie = New HttpCookie("mycookies", encryptedTicket)
Response.Cookies.Add(authCookie)...............................................................................我在另外的页面,就是需要用户信息的页面page_load事件中有如下代码:
Dim authCookie As HttpCookie = Context.Request.Cookies("mycookies")
If authCookie Is Nothing Then
Panel1.Visible = True
Else
Dim authTicket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value)
Dim roles() As String = authTicket.UserData.Split("|")
Context.User = New GenericPrincipal(Context.User.Identity, roles)
....
end if...................................但是测试时并没有这个效果,只要我重新启动浏览器,就需要再次登陆,也就是我的cookies值没有保存...我的COOKIES为什么不能保存一定的时间呢??
If Me.CheckTime.Checked = True Then
authTicket = New FormsAuthenticationTicket(1, stu_name, DateTime.Now, DateTime.Now.AddDays(14), false, role)
'roles是一个角色字符串数组(),两周内不需要重复登陆
Else
authTicket = New FormsAuthenticationTicket(1, stu_name, DateTime.Now, DateTime.Now.AddMinutes(120), false, role)'只保存两个小时
End If
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket) '加密 '存入Cookie()
Dim authCookie As HttpCookie = New HttpCookie("mycookies", encryptedTicket)
Response.Cookies.Add(authCookie)...............................................................................我在另外的页面,就是需要用户信息的页面page_load事件中有如下代码:
Dim authCookie As HttpCookie = Context.Request.Cookies("mycookies")
If authCookie Is Nothing Then
Panel1.Visible = True
Else
Dim authTicket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value)
Dim roles() As String = authTicket.UserData.Split("|")
Context.User = New GenericPrincipal(Context.User.Identity, roles)
....
end if...................................但是测试时并没有这个效果,只要我重新启动浏览器,就需要再次登陆,也就是我的cookies值没有保存...我的COOKIES为什么不能保存一定的时间呢??
解决方案 »
- .net 请教 history.go(-2)返回上一页的局限问题和解决方法
- 同一个页面 多个Datalist 不同时全选
- 自定义了MembershipProvider与RoleProvider后如何在代码中设置角色权限
- 求:点击Datagrid页眉标头进行排序的Javascript代码,顶者有分
- 只剩20分了!我的IIS怎么不能浏览aspx文件?
- **高分求一个可支持分页的datagridtoexcel的方法(分不够可再加)***
- 怎样让vs2003web编辑器不默认产生<FONT face="宋体"></FONT>这样的垃圾?
- 哪有开发ASP.NET的程序下载?
- 一个简单问题 关于水晶报表的图片显示-------在线等
- 前台调取后台的字符串,并根据字符串的值,确定<a>的href
- ASP.NET从数据库动态生成图表的,在线等
- 请各位大哥,大姐们帮帮我!
Sub Login_Click(sender As Object, e As EventArgs)
' Create a custom FormsAuthenticationTicket containing
' application specific data for the user. Dim email As String = UserEmail.Text
Dim password As String = UserPass.Text
Dim isPersistent As Boolean = Persist.Checked if Authenticated(email,password) Then Dim userData As String = "ApplicationSpecific data for this user." Dim ticket As New FormsAuthenticationTicket( _
1, _
email, _
System.DateTime.Now, _
System.DateTime.Now.AddMinutes(30), _
isPersistent, _
userData, _
FormsAuthentication.FormsCookiePath) ' Encrypt the ticket.
Dim encTicket As String = FormsAuthentication.Encrypt(ticket) ' Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)) ' Redirect back to original URL.
Response.Redirect(FormsAuthentication.GetRedirectUrl(email,isPersistent))
End If
End Sub上面的就是在sdk里面的一段原封不动的代码。仔细看会发现。
authTicket = New FormsAuthenticationTicket(1, stu_name, DateTime.Now, DateTime.Now.AddDays(14), false, role)
这句的倒数第二个参数应该是根据Me.CheckTime.Checked的值来确定的。
.Net技术讨论群14272327,欢迎爱好c#和asp.net的同志加入~队伍正在不断壮大中...
我的程序基本就是SDK翻版,没有什么区别。但是不知道为什么出问题。
谢谢楼上的。
所以我只要关闭浏览器就需要重新登陆。
为什么我的代码不能保存COOKIES?
authCookie.Expires = DateTime.Now.AddDays(14)
Else
authCookie.Expires = DateTime.Now.AddMinutes(60)
End If
Response.Cookies.Add(authCookie)
增加了这个OK了。谢谢楼上的。