Запретить перенаправление приложения ASP.NET Core MVC после запуска - PullRequest
0 голосов
/ 13 октября 2018

Я создал приложение ASP.NET MVC Core 2 с аутентификацией Azure в Visual Studio 2017.

Я также регистрирую приложение в Azure.

Теперь я нажимаю Ctrl + F5запустить приложение из Visual Studio 2017.

Я ожидал увидеть главную страницу, но она перенаправляет на https://login.microsoftonline.com/blablablabla

Но я хочу, чтобы оно перенаправляло только тогда, когда пользователь нажимает Знакв .

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Для Asp.Net Core MVC 2.0 встроенного шаблона он используется для [Authorize], чтобы разрешить запрос безопасности для доступа к [HomeController].

Для Asp.Net Core MVC 2.1 встроенного шаблона используется [Authorize] и AuthorizeFilter в Startup.

Для вашего сценария вы в основном попадете во второй сценарий.

Выполните следующие действия:

  • Удалите [Authorize] из HomeController.

    //[Authorize]
    public class HomeController : Controller
    {
       public IActionResult Index()
       {
           return View();
        }
    
  • Удалить AuthorizeFilter in services.AddMvc

            services.AddMvc(options =>
        {
            //var policy = new AuthorizationPolicyBuilder()
            //    .RequireAuthenticatedUser()
            //    .Build();
            //options.Filters.Add(new AuthorizeFilter(policy));
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
0 голосов
/ 14 октября 2018

Чтобы остановить перенаправление, вам нужно сначала найти причину.Вы можете инициировать запрос на вход обычно двумя способами -

  1. Украсьте свой класс / метод атрибутом [Authorize], который вызовет запрос на вход.

  2. Выполните явный вызов, как показано ниже ..

    return Challenge(
        new AuthenticationProperties { RedirectUri = redirectUrl },
        OpenIdConnectDefaults.AuthenticationScheme);
    

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

Вот пример для примера ядра ASP.NET, который имеет явное действие входа с кодомдоступно на GitHub.

Интеграция Azure AD в веб-приложение ASP.NET Core

В частности, посмотрите на AccountController, чтобы узнать, как принудительно выполнить вход.

[Route("[controller]/[action]")]
    public class AccountController : Controller
    {
        [HttpGet]
        public IActionResult SignIn()
        {
            var redirectUrl = Url.Action(nameof(HomeController.Index), "Home");
            return Challenge(
                new AuthenticationProperties { RedirectUri = redirectUrl },
                OpenIdConnectDefaults.AuthenticationScheme);
        }

Кроме того, чтобы убедиться, что я могу видеть домашнюю страницу без необходимости входа в систему, я просто сделал простое изменение в примере кода для HomeController.cs.Я вынул атрибут [Authorize] из HomeController, который присутствовал в исходном коде в GitHub.(иначе вы будете вынуждены войти в систему, как только вы запустите приложение)

namespace WebApp_OpenIDConnect_DotNet.Controllers
{ 
    // notice there is no [Authorize] attribute now, to make landing page available without signin
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...