我想知道,如何在我的身份服务器中正确实现用户注册,并在注册后,带有重定向的ASP Net Identity将其重定向到登录页面,然后在使用注册帐户登录后重定向到回调URL。/p>
我遵循Identity Server 4 QuickStart教程,到目前为止,我使用ASP.NET身份创建了自己的MVC Identity Server。现在,我想添加一些注册,因此我创建了带有注册表格的注册机构,并添加了注册按钮以登录表单。
我有一个需要身份验证的ASP.NET MVC应用程序。当用户运行主页时,他会自动将其重定向到我的身份服务器登录页面。用户单击"注册"按钮,填写所需的信息,然后单击"注册"按钮以确认注册。注册控制器创建一个新帐户,并使用客户经理将其存储在数据库中。
这是我缺少的部分:
成功注册后,我希望将用户重定向回登录页面,当用户登录时,应将其重定向回到Web应用程序并进行身份验证。
我是Web术语尤其是MVC的新手。您能推荐我一些文档,我可以在其中学习更多以解决此问题吗?
我在我的一个项目中遇到了类似的问题,基本上我们实现这种期望的行为的方式是在整个注册流中保留原始的connect/authorize
查询参数,然后将用户重定向返回带有原始查询参数的connect/authorize
URL。
从那时起,全部都在开箱即用,因为它将原始的回调URI与首先启动OAuth流的客户端具有。
感谢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 });
在注册表格中使用返回URL视图模型的属性 @Html.HiddenFor(x => x.ReturnUrl)
,否则将未在取消后返回中设置。