带有自定义UserManager和UserStore登录问题的.net Core 2.0剃刀页面模型身份验证

时间:2019-07-05 09:00:41

标签: .net authentication asp.net-core .net-core .net-core-authorization

我在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);

一切正常。登录的结果成功,但是当我重定向时得到以下信息: enter image description here 而且即使我手动导航到索引页面,它也会将我重定向到登录页面,并且如果我查看cookie(通过在浏览器中按F12键),也会看到cookie尚未设置。

有人知道我在做什么错吗?

0 个答案:

没有答案