C# Wait SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败
我目前正在实现登录ASP.NET MVC项目的功能。我正在尽可能多地使用提供的方法 目前,我已经在我的数据库中建立了一个名为User的表,该表存储了所有用户名、密码和有关用户的其他详细信息 我的登录视图模型:C# Wait SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我目前正在实现登录ASP.NET MVC项目的功能。我正在尽可能多地使用提供的方法 目前,我已经在我的数据库中建立了一个名为User的表,该表存储了所有用户名、密码和有关用户的其他详细信息 我的登录视图模型: public class LoginViewModel { public User User { get; set; } } AccountController(主要是默认值,我只更改了PasswordSignInAsync方法的变量) [HttpPost] [异名] [Vali
public class LoginViewModel
{
public User User { get; set; }
}
AccountController(主要是默认值,我只更改了PasswordSignInAsync方法的变量)
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
if(ModelState.IsValid)
{
返回视图(模型);
}
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=await-SignInManager.PasswordSignInAsync(model.User.Username,model.User.Password,false,shouldllockout:false);
为什么此行总是返回失败
这是我第一次尝试添加登录功能,因此非常感谢您的帮助。:)添加
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.CreatePerOwinContext(ApplicationSignInManager.Create);
如果用户名=电子邮件,则在app\u Start\Startup.Auth.cs
中的方法public void ConfigureAuth(IAppBuilder app)
这对我很有用:
点评:
//var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
加
ApplicationUser signedUser = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: false);
根据
模型检索用户
。发送电子邮件
,并将整个用户对象作为第一个参数传递
var user = dbContext.ApplicationUser.GetFirstOrDefault(u => u.Email == model.Email);
上面的查询返回userdata。检查用户是否为null。验证检索到的userdata并将其作为参数传递给PasswordSignInAsync
。参数类型有两种不同的方法
PasswordSignInAsync(String, String, Boolean, Boolean)
尝试以异步操作的形式登录指定的用户名和密码组合
PasswordSignInAsync(TUser, String, Boolean, Boolean)
尝试以异步操作的形式登录指定的用户和密码组合
PasswordSignInAsync(TUser, String, Boolean, Boolean)
PasswordSignInAsync(TUser,String,Boolean,Boolean)
执行与上述操作类似的操作并使结果成功。下面是检索成功结果的查询
var result = await _signInManager.PasswordSignInAsync(user, model.Password, model.RememberMe, lockoutOnFailure: false);
您好,欢迎使用StackOverflow。请将您的答案格式化为更清晰的格式。您应该检查signedUser是否为null。否则将引发异常