如何将ASP.Identity对象传递到第二个寄存器页面



我正在构建一个更高级的注册过程,该过程由3页组成,第一页是捕获用户名(电子邮件表单)和带有确认的密码的表单。按钮单击此页面将在DB中以未经验证的状态创建用户,并将其重定向到创建配置文件的页面。单击"创建配置文件"按钮并在DB中创建配置文件后,重定向将带您到填写表单的信用卡信息页面,验证信用卡,然后将信息写入数据库中的表格。

我已禁用标题中的loggedin用户显示,以便我可以使用Arent输入的注册人和姓氏,直到信用卡页面为止。由于登录登录需要并因此填充loggedin用户控件,因此如何通过页面传递此对象?

代码中的原始模板在用户中登录 :(注意:我在代码中注释了符号)

  Protected Sub CreateUser_Click(sender As Object, e As EventArgs)
    Dim userName As String = UserNameCtrl.Text
    Dim manager = New UserManager()
    Dim newuser = New IdentityUser() With {.UserName = userName}
    manager.UserValidator = New UserValidator(Of IdentityUser)(manager) With {.AllowOnlyAlphanumericUserNames = False}
    Dim result = manager.Create(newuser, Password.Text)
    If result.Succeeded Then
        Session("email") = newuser.UserName
        Session("userid") = newuser.Id.ToString()
        'uncomment the code below if you want the auto sign in to occur
        'IdentityHelper.SignIn(manager, newuser, isPersistent:=False)
        IdentityHelper.RedirectToReturnUrl(Page.ResolveUrl("~/Account/CreateProfile.aspx?Guid=" & newuser.Id.ToString()), Response)
    Else
        ErrorMessage.Text = Encoder.HtmlEncode(result.Errors.FirstOrDefault())
    End If
End Sub

我现在将此例程称为登录用户,一旦注册过程的第三页完成。(session(" userId")是新的注册人生成的用户ID)

 Private Sub SignInUserOnFormCompletion()
    Dim manager = New UserManager()
    manager.UserValidator = New UserValidator(Of IdentityUser)(manager) With {.AllowOnlyAlphanumericUserNames = False}
    Dim newuser = New IdentityUser() With {.Id = Session("userid").ToString()}
    IdentityHelper.SignIn(manager, newuser, isPersistent:=False)
End Sub

问题是上述问题,因为新努力人员以某种方式具有不同的凭据。如何将原始的Newuser从第一页传递到第三页,在该页面上可以在SignInuseronFormCompletion subroutine中使用它?我会创建一个cookie并以这种方式传递吗?这对我来说是一个新话题,所以我不熟悉完成此操作的适当方法。

如果您使用排列的多个页面作为向导,则需要在页面之间传递数据。

但是,如果您使用具有MultiViewWizard控件的单个页面,则无需执行此操作。只需将当前页面作为MultiView中的单独视图安排,然后使用Session状态保留在帖子背面的数据。

最新更新