2015-07-29 3 views
1

Я хочу реализовать пользовательскую систему входа в систему, потому что мои пользователи хранятся в другой базе данных, и у меня просто есть dll для проверки учетных данных, поэтому я не хочу базы данных. Мне просто нужна возможность входа (с ролями: admin и пользователем) и выход из системы для этого приложения. В базе данных инструмента я сохраняю только имя пользователя и его роль (без пароля).Как сделать vNext использовать мой код идентификации?

Во-первых: какие классы я должен реализовать, добиваясь желаемого эффекта?

Во-вторых: как настроить приложение, чтобы он использовал мой собственный код?

ответ

1

Я не уверен, что я сделал это 100% правильный путь, но посмотрите:

1. Настройка аутентификации печенье

 public void Configure(IApplicationBuilder app) 
     { 
      app.UseCookieAuthentication(options => 
      { 
       options.AutomaticAuthentication = true; 
       options.SlidingExpiration = true; 
       options.ExpireTimeSpan = TimeSpan.FromMinutes(30); 
      }); 

     } 

2. Вход в систему

public class LoginController: Controller 
{ 

    public IActionResult SignIn(LoginModel form) 
    {  
     var userId = CustomLoginLogic(form); 

     var claims = new List<Claim> 
       { 
        new Claim(ClaimTypes.NameIdentifier, result.UserId) 
       }; 
     var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme));      
     context.Response.SignIn(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal); 
     return Content(""); 
    } 
} 
+0

Я понял идеал 'CustomLoginLogic (form)', который просто возвращает идентификатор пользователя на основе моих BL потребностей, но часть претензии я не заполняю я понимаю. Каково название претензии? И как я могу использовать его для авторизации доступа на основе этого? Используя роли, которые я выполнял: '[Authorize (Roles =" Admin ")]' –

+0

Я думаю, вы также можете добавить еще одно требование с типом 'ClaimTypes.Role' и проверить, помогает ли оно для авторизации на основе ролей – STO

+0

Я понял цель из 'ClaimTypes', но у меня есть 1 последний вопрос: он не reddirect для входа в систему при доступе к действию контроллера с ролью, которой у него нет. Как мне сделать этот последний шаг? Я попробовал: 'options.LoginPath = new PathString («/Account/Login »);' –

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