Как заставить vNext использовать мой пользовательский идентификационный код?
Я хочу внедрить систему пользовательского входа, потому что мои пользователи хранятся в другой базе данных, и у меня просто есть dll для проверки учетных данных, поэтому я не хочу базу данных. Я просто хочу иметь возможность войти (с ролями: администратор и пользователь) и выйти из этого приложения. В базе данных инструмента я сохраняю только имя пользователя и его роль (без пароля).
Первое: какие классы я должен реализовать для достижения желаемого эффекта?
Второе: как мне настроить приложение, чтобы оно использовало мой пользовательский код?
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("");
}
}