【发布时间】:2014-03-24 02:17:43
【问题描述】:
我正在处理创建和审查新用户的过程。用户注册后,他们会收到一个链接(包含带有令牌的查询字符串)到他们的电子邮件,以便他们可以验证他们的电子邮件地址。当用户单击该链接时,他们会被重定向到验证其信息的页面,然后将其角色从 Guest 更改为 Member。
工艺流程
电子邮件 > verifyEmail.aspx > dashboard.aspx
当用户已经登录到网络应用程序并单击电子邮件中的链接时,他们的角色会相应更改;但是,当它们被重定向到 dashboard.aspx 时,User.IsInRole("Member") 为 false。注销后重新登录,User.IsInRole("Member") 为真。所以我的问题是,我怎样才能更新用户的身份,以及用户的上下文,而不强制他们退出然后重新登录?我猜它与角色的 cookie 有关?
代码
If userToken.Token1 = token Then
Dim userRole = Roles.GetRolesForUser(authUser)
Dim userIdentity = New GenericIdentity(authUser)
Dim principal = New GenericPrincipal(userIdentity, userRole)
Dim isOnline As Boolean = False
If HttpContext.Current IsNot Nothing AndAlso HttpContext.Current.User.Identity.IsAuthenticated Then
If Not Membership.GetUser.ProviderUserKey Is Nothing Then
isOnline = True
End If
End If
Context.User = principal
If User.IsInRole("Guest") = True AndAlso User.IsInRole("Member") = False Then
Roles.AddUserToRole(User.Identity.Name, "Member")
Roles.RemoveUserFromRole(User.Identity.Name, "Guest")
If isOnline = True Then
'***do stuff here to change the context
Response.Redirect("../Account/GetStarted.aspx")
End If
End If
End If
【问题讨论】:
标签: asp.net vb.net asp.net-membership asp.net-identity asp.net-roles