Как предотвратить доступ пользователя к маршруту через панель поиска? - PullRequest
0 голосов
/ 02 апреля 2019

Я работаю над этим приложением MVC / Razor Pages для ядра Dotnet, и предполагается, что пользователи не смогут получить доступ к определенным маршрутам контроллера через панель поиска, если они не указали его в форме регистрации.Как мне этого добиться?Есть ли в ядре dotnet MVC ключевое слово для этого?Я застрял.Некоторый соответствующий код для Идентификации / Аккаунта / Регистра, который показывает регистрацию ниже

  [Required]
            [Display(Name = "Choose businesslisting or choice")]
            public string Decision { get; set; }
        }
   public void OnGet(string returnUrl = null)
        {
            ReturnUrl = returnUrl;
        }

        public async Task<IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new IdentityUser { UserName = Input.Email, Email = Input.Email };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (Input.Decision == "Business Listing" || Input.Decision == "business listing")
                {

                    if (result.Succeeded)
                    {

                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null, 
                            values: new { userId = user.Id, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Change your password",
                       $"Please change your password by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                        await _signInManager.SignInAsync(user, isPersistent: false);
                        return LocalRedirect(returnUrl);
                    }
}

1 Ответ

0 голосов
/ 02 апреля 2019

Я бы начал с документации по авторизации ядра ASP.NET https://docs.microsoft.com/en-us/aspnet/core/security/authorization/introduction?view=aspnetcore-2.2

В этом сценарии может оказаться полезной проверка подлинности на основе утверждений https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims?view=aspnetcore-2.2

После создания пользователей вы можете добавлять конкретные утверждения, которые позволяют им получать доступ к определенным контроллерам / URL-адресам.

...