asp.net核心SignInAsync方法未验证

时间:2018-12-23 04:50:24

标签: c# authentication asp.net-core

我的管理控制器顶部具有[authorize]属性。当我从登录页面运行以下代码时:

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, vm.Email)
};

var claimsIdentity = new ClaimsIdentity(claims, 
    CookieAuthenticationDefaults.AuthenticationScheme);

await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
    new ClaimsPrincipal(claimsIdentity));

一切正常。但是,它似乎并未在登录用户,因为管理控制器将用户带回到登录页面,并且User.Identity.IsAuthenticatedfalse

编辑:这是我的ConfigureConfigureServices方法:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddDistributedMemoryCache();

    services.AddSession(options =>
    {
        // Set a short timeout for easy testing.
        // options.IdleTimeout = TimeSpan.FromSeconds(10);
        options.Cookie.HttpOnly = true;
    });


    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.AddDbContext<myDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("myDb")));

    services.AddScoped<AccountsRepository>();

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.AccessDeniedPath = new PathString("/Account/AccessDenied");
            options.LoginPath = new PathString("/Account/SignIn");
            options.LogoutPath = new PathString("/Home/SignOut");
        });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseSession();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

0 个答案:

没有答案