Я пытаюсь использовать аутентификацию Cookie в моем проекте MVC .net. Процесс заключается в том, что после регистрации у меня есть запись в таблице ASPNetUsers, и я расширил эту таблицу, включив в нее userType. После того, как пользователь вошел в систему, я вижу, что в коллекции cookie есть куки-файл через браузер Chrome. Когда я пытаюсь перенаправить пользователя после входа в систему, он терпит неудачу. Если я украшаю метод, который перенаправляю с [AllowAnonymous]
, метод получает удар, поэтому я знаю, что перенаправление верное..net core Аутентификация с идентификатором не запускает мое действие
В верхней части моего контроллера у меня [Authorize(ActiveAuthenticationSchemes = "Cookie")]
При запуске приложения зарегистрировать идентичность со следующим битом кода:
services.AddIdentity<ApplicationUser, IdentityRole<int>>(
config => { config.User.RequireUniqueEmail = true;
config.Cookies.ApplicationCookie.LoginPath = "/Account/Login";
config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = async ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/visualjobs") && ctx.Response.StatusCode == 200)
{
ctx.Response.StatusCode = 401;
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
}
await Task.Yield();
}
};
}).AddEntityFrameworkStores<VisualJobsDbContext, int>()
.AddDefaultTokenProviders();
и в конфигурации запуска у меня есть:
app.UseIdentity();
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "Cookie",
// LoginPath = new PathString("/Account/Login/"),
AutomaticAuthenticate = false
});
Что я пропустил?
Я думаю, вам нужно добавить ** аутентификациюScheme ** и ** AutomaticAuthenticate ** опции в вызове 'AddIdentity', как в' config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie" '. (В противном случае может быть слишком поздно, поскольку 'UseIdentity' внутренне вызывает' UseCookieAuthentication') –
@ DanielJ.G. Огромное спасибо. Это решило проблему. Если вы хотите переместить это в ответ, а не комментарий, я дам вам кредит. – bilpor