Идентификационный сервер 4 с регистрацией идентичности asp.net - PullRequest
0 голосов
/ 06 мая 2019

Я хочу знать, как правильно реализовать регистрацию пользователей на моем сервере идентификации с помощью asp net identity с перенаправлением на страницу входа после регистрации и затем перенаправлением на URL обратного вызова после входа в систему с зарегистрированной учетной записью.

Я следовал за ИдентификациейКраткое руководство по серверу 4, и пока я создал свой собственный mvc-сервер идентификации с asp.net.Теперь я хочу добавить регистрацию, поэтому я создал RegistrationController с формой регистрации и добавил кнопку «Регистрация» в форму входа.

У меня есть приложение asp.net mvc, которое требует аутентификации.Когда пользователь запускает главную страницу, он автоматически перенаправляется на мою страницу авторизации на сервере идентификации.Пользователь нажимает кнопку регистрации, заполняет необходимую информацию и нажимает кнопку регистрации, чтобы подтвердить регистрацию.Контроллер регистрации создает новую учетную запись и сохраняет ее в базе данных с помощью диспетчера учетных записей.

Это часть, которую мне не хватает:

После успешной регистрации я хочу, чтобы пользователь был перенаправленвернуться на страницу входа, и когда пользователь входит в систему, он должен быть перенаправлен обратно в веб-приложение и аутентифицирован.

Я новичок в веб-терминологии, особенно в mvc.Можете ли вы порекомендовать мне, пожалуйста, некоторую документацию, где я могу узнать больше, чтобы решить эту проблему?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Спасибо Видмантасу Блажевичусу совет, я нашел решение.Когда пользователь нажимает кнопку регистрации, я перенаправляю его на страницу регистрации с обратным 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) в противном случае он не будет установлен в режиме отмены обратной передачи.

0 голосов
/ 07 мая 2019

Я столкнулся с подобной проблемой в одном из моих проектов, и в основном способ, которым мы достигли этого желаемого поведения, состоял в том, чтобы сохранить исходные параметры запроса connect/authorize в течение всего процесса регистрации, а затем в конце перенаправить пользователя обратно на connect/authorize URL с исходными параметрами запроса.

С этого момента все работало "из коробки", поскольку у него был исходный URI обратного вызова для клиента, который в первую очередь инициировал поток OAuth.

...