具有asp.net身份注册的身份服务器4

时间:2019-05-06 19:17:13

标签: asp.net-mvc callback asp.net-identity identityserver4 registration

我想知道,如何在我的身份服务器中使用asp net身份正确实现用户注册,并在注册后重定向到登录页面,然后在使用注册帐户登录后重定向到回调URL。

我遵循了Identity Server 4快速入门教程,到目前为止,我使用asp.net身份创建了自己的mvc身份服务器。现在我想添加一些注册,所以我用注册表单创建了RegistrationController,并在登录表单中添加了Register按钮。

我有一个需要身份验证的asp.net mvc应用程序。当用户运行主页时,他将自动重定向到我的身份服务器登录页面。用户单击注册按钮,填写所需信息,然后单击注册按钮以确认注册。注册控制器创建一个新帐户,并使用帐户管理器将其存储在数据库中。

这是我所缺少的部分:

成功注册后,我希望将用户重定向回登录页面,并在用户登录时将其重定向回Web应用程序并进行身份验证。

我是网络术语的新手,尤其是mvc。您能推荐我一些文档,在其中我可以了解更多有关解决此问题的信息吗?

2 个答案:

答案 0 :(得分:1)

感谢Vidmantas Blazevicius的贴士,我找到了解决方法。当用户单击注册时,我将他重定向到注册页面,并使用返回URL作为查询参数。用户确认或取消注册后,他将被重定向回AccountContoller.Login(string returnUrl)操作。然后,当用户登录时,他将成功重定向回原始站点。

这是用户点击登录页面中的注册时的AccountControler.Register操作:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Register(LoginInputModel model)
        => RedirectToAction("register", "registration", new { returnUrl = model.ReturnUrl });

这会调用RegistrationController.Register来显示注册表格:

    [HttpGet]
    [Route("register")]
    public ViewResult Register([FromQuery]string returnUrl)
        => View("Views/Account/Registration.cshtml", new UserRegistrationViewModel(returnUrl));

当用户在注册页面中单击“取消”时,将执行RegistrationController.Cancel操作:

    [HttpPost]
    [Route("cancel")]
    public IActionResult Cancel(UserRegistrationViewModel viewModel)
        => RedirectToAction("login", "account", new { returnUrl = viewModel.ReturnUrl });

在注册表单中,请使用@Html.HiddenFor(x => x.ReturnUrl)这样的视图模型返回URL属性,否则将不会在“取消回发”中进行设置。

答案 1 :(得分:0)

在我的一个项目中,我也遇到了类似的问题,基本上,实现此所需行为的方法是在整个注册流程中保留原始的connect/authorize查询参数,然后最后将用户重定向回{ {1}}带有原始查询参数的网址。

从那时起,所有方法都可以立即使用,因为它具有到客户端的原始回调uri,该客户端首先启动了OAuth流。