У меня есть это в 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);
Все предположительно работает просто отлично. Результат входа успешен, но когда я перенаправляю, я получаю это:
И даже если я вручную перехожу на страницу индекса, он перенаправляет меня на страницу входа в систему, и если я просматриваю файлы cookie (нажав F12 в браузере), я вижу, что файл cookie не был установлен.
Кто-нибудь знает, что я делаю неправильно?