.net core 2.0 бритвенная аутентификация модели страницы с пользовательской проблемой UserManager и UserStore
У меня есть это в Startup.cs
services.AddIdentity<AppUser, AppUserRole>(cfg =>
{
cfg.User = new UserOptions() { };
cfg.User.RequireUniqueEmail = false;
cfg.SignIn.RequireConfirmedEmail = false;
})
.AddUserManager<AppUserManager<AppUser>>()
.AddUserStore<AppUserStore>()
.AddRoleStore<AppRoleStore>()
.AddDefaultTokenProviders();
services.AddAuthentication();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
и это
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc();
Login.cshtml.cs имеет это:
public async Task<IActionResult> OnPostAsync(string returnUrl,string handler)
{
if (!ModelState.IsValid)
{
return Page();
}
var appUser = new AppUser() { UserName = UserLogin.Username, PasswordHash=UserLogin.Password };
var result = await _signUpMgr.PasswordSignInAsync(appUser, UserLogin.Password, false, false);
if(!result.Succeeded)
return BadRequest("Bad username or password");
return LocalRedirect("/Index");
Я использую AppUserManager и AppUserStore, чтобы просто возвращать жестко закодированные значения. Если это когда-нибудь сработает, я позвоню в службу REST оттуда. Я делаю это так (пример для UserManager, я также переопределяю 3 метода из UserStore):
public override Task<bool> CheckPasswordAsync(TUser user, string password)
{
//return new Task<bool>(() => _authServiceProxy.UserHasAccess(_appConf.Value.CslLink, user.UserName, password));
return Task.FromResult(true);
Все якобы работает просто отлично. Результат входа успешен, но когда я перенаправляю, я получаю это: И даже если я вручную перехожу на страницу индекса, он перенаправляет меня на страницу входа в систему, и если я смотрю на куки (нажимая F12 в браузере), я вижу, что куки не были установлены.
Кто-нибудь знает, что я делаю не так?