我在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为例,我还重写了UserStore中的3种方法):
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尚未设置。
有人知道我在做什么错吗?