【问题标题】:How to change Context.User after changing the role of the user更改用户角色后如何更改 Context.User
【发布时间】: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


    【解决方案1】:

    假设您使用的是表单认证,可能需要使用以下方法:

    FormsAuthentication.SetAuthCookie
    

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

    取自 MSDN

    【讨论】:

    • 是的,表单身份验证。我已经尝试过 FormsAuthentication.SetAuthCookie(User.Identity.Name, False) 但没有运气。我没有使用无 cookie 身份验证。
    • 您是否尝试过使用其他浏览器?并使用 Telerik fiddler 来分析您的 cookie,以确保
    • 不,但我现在会。谢谢推荐
    • Roles.Clear() 最终成为我所需要的,但您的回复使我得到了答案,因此您得到了检查
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2017-08-10
    • 2012-08-23
    • 1970-01-01
    • 2019-12-18
    • 2021-07-11
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多