美好的一天。 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?}");
});
}
答案 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();
// ...
}
我想我会回答这个问题,以防其他人遇到同样的问题。