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

时间:2014-01-26 03:15:22

标签: asp.net identity

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

我已经在标题中禁用了登录用户显示,这样我就可以使用在信用卡页面之前输入的注册者名字和姓氏。由于登录需要identityUser并因此填充登录用户控件,如何将此对象从一个页面传递到另一个页面?

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

  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

我现在称这个例程在注册过程的第三页完成后登录用户。 (会话(“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以某种方式具有不同的凭据。如何将原始newuser从第一页传递到第三页,我可以在SignInUserOnFormCompletion子例程中使用它?我是否创建了一个cookie并以这种方式传递它? 这对我来说是一个新主题,所以我不熟悉实现这一目标的正确方法。

1 个答案:

答案 0 :(得分:0)

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

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