如何更改上下文.修改用户角色后的用户名



我正在处理创建和审查新用户的过程。在用户注册之后,他们会被发送一个链接——包含一个带有令牌的查询字符串——到他们的电子邮件,这样他们就可以验证他们的电子邮件地址。当用户单击链接时,他们被重定向到验证其信息的页面,然后将他们的角色从Guest更改为Member

流程流

Email> verifyEmail。Aspx> dashboard。aspx

当用户已经登录到web应用程序,他们点击链接从他们的电子邮件,他们的角色相应地改变;但是,当它们被重定向到仪表板时。User.IsInRole("Member")为false。在注销和重新登录后,User.IsInRole("Member")为true。我的问题是,如何更新用户的身份,以及用户的上下文,而不强制他们退出然后重新登录?我猜这和饼干的角色有关?

    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

假设您正在使用表单身份验证,可能您需要使用以下方法:

FormsAuthentication.SetAuthCookie

这将"为提供的用户名创建一个身份验证票据,并将其添加到响应的cookie集合中,如果使用无cookie身份验证,则将其添加到URL中。"

取自MSDN

相关内容

  • 没有找到相关文章

最新更新