2016-08-29 8 views
1

Я использую CookieAuthenticationOptions для настройки аутентификации в моем приложении .NET Core, но моя страница входа в другой домен. Однако свойство LoginPath допускает внутренний путь, а не полный URI. Таким образом, следующий код:ASP.NET Core CookieAuthenticationOptions.LoginPath в другом домене

var cookieOptions = new CookieAuthenticationOptions() 
{ 
    AuthenticationScheme = "Cookies", 
    LoginPath = new PathString("https://externaldomain.com/login"), 
    CookieName = string.Format("myCookie"), 
}; 

app.UseCookieAuthentication(cookieOptions); 

... недействителен. Это должно быть достаточно просто, или я что-то упустил? Мне бы не хотелось обрабатывать это внутренне в моем приложении и выполнять собственно перенаправление. Это было бы ласково.

+1

Как временное решение вы можете создать локальную страницу/контроллер, который перенаправлять на внешний связь – Kalten

+0

Ну да, но как я уже говорил в моем вопросе, «Я не хотел бы, чтобы справиться с этим внутренне в моей заявке и выполнять собственно перенаправление ». Кажется странным, что нужно это делать самому. – Razzie

+0

@Razzie Просто интересно, как вы можете настроить cookie через другой домен? –

ответ

2

Использование OnRedirectToLogin:

var cookieOptions = new CookieAuthenticationOptions() 
{ 
    AuthenticationScheme = "Cookies", 
    CookieName = string.Format("myCookie"), 
    Events = new CookieAuthenticationEvents() 
    { 
      OnRedirectToLogin = async (context) => 
      { 
       context.HttpContext.Response.Redirect("https://externaldomain.com/login"); 
      }; 
    } 
} 
+0

Я не могу заставить это работать, но я не уверен, связано ли это с изменениями в новых версиях .NET Core. Он подчеркивает всю функцию лямбда и жалуется, что ей не хватает оператора 'await'. Но он также генерирует синтаксические ошибки для кучи '} ожидаемых', начиная с'}; 'после строки .Redirect. Если я отбрасываю 'async', то он жалуется, что не все пути кода возвращают значение в выражении лямбда. –

Смежные вопросы