Аутентификация Azure AD перенаправляет на домашнюю страницу - PullRequest
0 голосов
/ 21 ноября 2018

Я создаю аутентификацию Azure AD, которая работает нормально, единственная проблема заключается в том, что если пользователь щелкает ссылку, которая выглядит как host.com/xxx/bbb, если он не аутентифицирован, то он перенаправляется в root.

Мне нужно, чтобы они по-прежнему были перенаправлены на исходный URL-адрес, введенный в браузере.Может ли это быть достигнуто?Ниже приведен фрагмент кода, который я использую при запуске приложения:

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = XXX,
                Authority = string.Format("https://login.microsoftonline.com/{0}", YYY,

                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    RedirectToIdentityProvider = async n => { await Task.Run(() => SetRedirectUrl(n)); }
                }
            });
    }

private static void SetRedirectUrl(RedirectToIdentityProviderNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
    {
        notification.ProtocolMessage.RedirectUri = notification.Request.Uri.AbsoluteUri;
    }

Ни одно из свойств OwinRequest не содержит полный путь, который я ищу.Я также попытался посмотреть на

HttpContext.Current.Request.Url

, но у него также нет полного адреса.

1 Ответ

0 голосов
/ 27 ноября 2018

Мне нужно, чтобы они по-прежнему были перенаправлены на исходный URL-адрес, введенный ими в браузере.

Вам необходимо установить метод SignIn() в AccountController.cs.Вы можете использовать «Request.UrlReferrer.ToString ();», чтобы получить введенный URL:

public void SignIn()
        {

            // var host = Request.UserHostName.ToString();
            var ori = Request.UrlReferrer.ToString();
            var index = ori.LastIndexOf('/');
            var action = ori.Substring(index);
            // Send an OpenID Connect sign-in request.
            if (!Request.IsAuthenticated)
            {
                HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = action },
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...