我想知道的是,如何在我的身份服务器上正确地实现用户注册,使用asp网络标识,重定向到注册后登录页面,然后重定向到注册帐户登录后的回调URL。
我学习了identity Server 4快速入门教程,到目前为止,我使用asp.net标识创建了自己的mvc服务器。现在,我想添加一些注册,所以我创建了RegistrationController与注册表格,并添加了注册按钮登录表单。
我有一个需要身份验证的asp.net mvc应用程序。当用户运行主页时,他会被自动重定向到我的身份服务器登录页面。用户单击“注册”按钮,填写所需信息,单击“注册”按钮以确认注册。注册控制器创建一个新帐户,并使用帐户管理器将其存储在数据库中。
这是我缺少的部分:
成功注册后,我希望用户被重定向回登录页面,当用户登录时,他应该被重定向回web应用程序并进行身份验证。
我对web术语很陌生,尤其是mvc。你能给我推荐一些文件吗?我可以从中学到更多的东西来解决这个问题吗?
发布于 2019-05-07 08:52:28
在我的一个项目中,我遇到了类似的问题,基本上,我们实现这种理想行为的方式是在整个注册流程中保留原始的connect/authorize查询参数,然后使用原始的查询参数将用户重定向回connect/authorize url。
从这一点开始,所有的工作都是从盒子里开始的,因为它有最初启动OAuth流的客户机的原始回调uri。
发布于 2019-05-07 20:44:31
谢谢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属性,否则将不会在取消回发中设置它。
https://stackoverflow.com/questions/56011116
复制相似问题