我有一个标准的MVC项目,包含UserManager和SignInManager对象以及一个AccountController,具有预先创建的登录和注册类型功能。
我可以在我的AspNetUsers表中注册新用户,但当我登录时,我会调用:-
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
表格中的数据是正确的,结果是成功,这是我所期望的。
然后我尝试了以下重定向:-
case SignInStatus.Success:
//return RedirectToLocal("/admin/");
return RedirectToAction("Index", "Admin");
但在任何页面上,成功登录后,User.Identity.IsAuthenticated始终为false,User.Iidentity.Name为空字符串。
我做错了什么?我以前用同样的方式和同样的设置做过另一个项目,我没有遇到任何问题。
web.config
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<!--<authentication mode="Forms">
<forms loginUrl="~/Account/Login/" timeout="1000" />
</authentication>-->
<authentication mode="None" />
</system.web>
<modules>
<remove name="FormsAuthentication" />
</modules>
有人能指出我做错了什么吗?它现在引发了重大问题。
干杯!
检查项目中的App_Start
文件夹中是否有Startup.Auth.cs
文件。
public partial class Startup {
public void ConfigureAuth(IAppBuilder app) {
// This uses cookie to store information for the signed in user
var authOptions = new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
LogoutPath = new PathString("/Account/Logout"),
ExpireTimeSpan = TimeSpan.FromDays(7),
};
app.UseCookieAuthentication(authOptions);
}
}
并从CCD_ 3类调用
public partial class Startup {
public void Configuration(IAppBuilder app) {
// Surface Identity provider
ConfigureAuth(app);
//..other start up code
}
}
根据你使用的asp.net版本和身份,你应该看看这个
ASP.NET Identity AuthenticationManager与SignInManager和cookie过期
对我来说,这是web.config,行后面的注释
<system.webServer>
<modules>
<!--<remove name="FormsAuthentication" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
-->
</modules>
</system.webServer>