2016-10-20 2 views
1

Я пытаюсь использовать аутентификацию 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 
     }); 

Что я пропустил?

+1

Я думаю, вам нужно добавить ** аутентификациюScheme ** и ** AutomaticAuthenticate ** опции в вызове 'AddIdentity', как в' config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie" '. (В противном случае может быть слишком поздно, поскольку 'UseIdentity' внутренне вызывает' UseCookieAuthentication') –

+0

@ DanielJ.G. Огромное спасибо. Это решило проблему. Если вы хотите переместить это в ответ, а не комментарий, я дам вам кредит. – bilpor

ответ

0

Добавить AuthenticationScheme и AutomaticAuthenticate параметры в вызове AddIdentity как в этом примере:

config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie"; 

В противном случае это будет слишком поздно, как UseIdentity будет внутренне назвать UseCookieAuthentication для Cookies.ApplicationCookie без ваших обновленных настроек.

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

  • Нет связанных вопросов^_^