我正在尝试将ASP.NET Identity 3.0单用户身份验证添加到 Visual Studio 2017中的“ASP.NET核心应用程序角度模板”。我在这里创建了一个GitHub存储库:
https://github.com/DapperDanH/NutmegStackoverflow
这个项目真的没什么了。从高层次来看,这就是我所做的:
我的目标是使用标准的ASP.NET MVC作为身份验证部分。
一切似乎都有效。 Web应用程序启动并显示主页。我创建了“注册”和“登录”页面的链接。我可以成功注册新用户,并将新用户添加到数据库中。用户可以在“登录”页面中输入他们的信息,AccountController.Login方法将成功返回到PasswordSignInAsync方法:
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
问题是,没有创建身份验证cookie。好吧,大约99%的时间没有创建cookie但是偶尔会创建一个。
我的直觉说这个问题可能出现在Startup.cs中。这是我正在使用的代码:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<NutmegContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<User, AppRole>()
.AddEntityFrameworkStores<NutmegContext>()
.AddDefaultTokenProviders();
// Add application services.
services.AddTransient<IEmailSender, EmailSender>();
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}
我真的希望有人可以帮助我。要看到这一点:
希望有人可以帮助我。感谢您阅读这篇长篇文章!
谢谢, 丹
答案 0 :(得分:0)
我能够让应用程序始终如一地创建auth cookie,但将我的web项目切换为HTTPS。我不知道为什么这很重要,但它似乎解决了它。有谁能解释?