ASP .NET核心身份SignInManager

时间:2018-03-30 09:19:23

标签: c# asp.net-core-mvc asp.net-core-2.0

美好的一天。 ASP.NET-Core项目没有认证。所以,我试图为此目的添加内置标识。数据库中的表已成功创建,新用户已注册。在登录方法SignInManager中的帐户控制器中,返回成功进程。在局部视图中,Login \ Register的链接添加了注入和库(所有看起来都是带有身份验证的默认项目,基于其实现):

@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager

然后在视图中检查:

SignInManager.IsSignedIn(User)

登录后,它总是错误的,无关紧要的,在控制器中登录的状态是成功的。我错过了在Configuration或其他地方的Startup.cs添加内容吗?通过身份验证实现默认VS项目中的所有内容。

UPD。 Startup.cs

中的配置
public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
        options.UseMySql("Server=; Database=; Uid=;Pwd=;"));

        services.AddIdentity<ApplicationUser, IdentityRole>(options =>
        {
            options.Password.RequireDigit = true;
            options.Password.RequiredLength = 6;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = true;
            options.Password.RequireLowercase = false;

            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            options.Lockout.MaxFailedAccessAttempts = 5;

            options.User.RequireUniqueEmail = true;
            options.SignIn.RequireConfirmedEmail = true;
        })
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

        // Here added my application services. 
        .......

        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseAuthentication();

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

2 个答案:

答案 0 :(得分:1)

在您的ConfigureServices方法中也配置cookie。如下所示:

...
// Here added my application services. 
.......
services.ConfigureApplicationCookie(options => 
{
     options.Cookie.HttpOnly = true;
     options.Cookie.Expiration = TimeSpan.FromDays(5);
     options.LoginPath = "/Account/Login";
 });

答案 1 :(得分:1)

我遇到了同样的问题,但是在检查了您的帖子后,我意识到我没有包括身份验证。我不需要设置Cookie。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // ...

    app.UseAuthentication();

    // ...
}

我想我会回答这个问题,以防其他人遇到同样的问题。