在确认电子邮件地址时登录用户

时间:2015-04-17 12:23:37

标签: vb.net asp.net-identity asp.net-4.5

使用Microsoft.AspNet.Identity我几乎只需要管理用户问题,但我(vb.net初学者)无法更新此代码,以便在确认电子邮件地址时自动登录用户

我想我需要一种基于UsedId

获取ApplicationUser的方法

这是我尝试更改的代码:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim code As String = IdentityHelper.GetCodeFromRequest(Request)
    Dim userId As String = IdentityHelper.GetUserIdFromRequest(Request)
    If code IsNot Nothing AndAlso userId IsNot Nothing Then
        Dim manager = Context.GetOwinContext().GetUserManager(Of ApplicationUserManager)()
        Dim result = manager.ConfirmEmail(userId, code)
        If result.Succeeded Then
       '>>>>>>>>login the user  
            successPanel.Visible = True
            Return
        End If
    End If
    successPanel.Visible = False
    errorPanel.Visible = True      
End Sub

1 个答案:

答案 0 :(得分:0)

如果其他人有此问题,这是我使用的代码

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim code As String = IdentityHelper.GetCodeFromRequest(Request)
    Dim userId As String = IdentityHelper.GetUserIdFromRequest(Request)
    If code IsNot Nothing AndAlso userId IsNot Nothing Then
        Dim manager = Context.GetOwinContext().GetUserManager(Of ApplicationUserManager)()
        Dim result = manager.ConfirmEmail(userId, code)
        If result.Succeeded Then
            Try

                Dim task = New UserStore(Of Sue.ApplicationUser)(Context.GetOwinContext().[Get](Of ApplicationDbContext)()).FindByIdAsync(userId)
                Dim user = task.Result()

                Dim signInManager = Context.GetOwinContext().Get(Of ApplicationSignInManager)()

                signInManager.SignIn(user, isPersistent:=False, rememberBrowser:=False)

                Context.Response.Redirect("/Account/UserData", False)

            Catch ex As Exception
                successPanel.Visible = False
                errorPanel.Visible = True
                Return
            End Try
        End If
    End If
    successPanel.Visible = False
    errorPanel.Visible = True
End Sub