我想知道,如何在我的身份服务器中使用asp net身份正确实现用户注册,并在注册后重定向到登录页面,然后在使用注册帐户登录后重定向到回调URL。
我遵循了Identity Server 4快速入门教程,到目前为止,我使用asp.net身份创建了自己的mvc身份服务器。现在我想添加一些注册,所以我用注册表单创建了RegistrationController,并在登录表单中添加了Register按钮。
我有一个需要身份验证的asp.net mvc应用程序。当用户运行主页时,他将自动重定向到我的身份服务器登录页面。用户单击注册按钮,填写所需信息,然后单击注册按钮以确认注册。注册控制器创建一个新帐户,并使用帐户管理器将其存储在数据库中。
这是我所缺少的部分:
成功注册后,我希望将用户重定向回登录页面,并在用户登录时将其重定向回Web应用程序并进行身份验证。
我是网络术语的新手,尤其是mvc。您能推荐我一些文档,在其中我可以了解更多有关解决此问题的信息吗?
答案 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流。