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

Identity server 4 with asp.net identity registration

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

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

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

这是我遗漏的部分:

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

我不熟悉网络术语,尤其是 mvc。你能给我推荐一些文档吗?我可以从中学到更多来解决这个问题?

我在我的一个项目中遇到过类似的问题,基本上我们实现这一预期行为的方式是在整个注册流程中保留原始的 connect/authorize 查询参数,然后在最后将用户重定向回connect/authorize url 与原始查询参数。

从那时起,一切都开箱即用,因为它具有最初启动 OAuth 流程的客户端的原始回调 uri。

感谢 Vidmantas Blazevicius 的提示,我找到了解决方案。当用户单击注册时,我将他重定向到使用 return 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 });

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