任何密码都适用于 SmartAdmin MVC
Any password is working with SmartAdmin MVC
我可以使用任何密码进行身份验证。电子邮件必须是有效的注册电子邮件,但密码无关紧要。其他一切正常。
关于从哪里开始解决这个问题有什么建议吗?我在网络搜索中没有发现任何类似的问题。
我的看法...
我在帐户控制器中的操作...
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(AccountLoginModel viewModel)
{
if (!ModelState.IsValid)
return View(viewModel);
var user = _manager.FindByEmail(viewModel.Email);
if (user != null)
{
await SignInAsync(user, viewModel.RememberMe);
string uid = user.Id;
return RedirectToLocal(viewModel.ReturnUrl);
}
ModelState.AddModelError("", "Invalid username or password.");
return View(viewModel);
}
和 signinasync 方法...
private async Task SignInAsync(IdentityUser user, bool isPersistent)
{
// Clear any lingering authencation data
FormsAuthentication.SignOut();
// Create a claims based identity for the current user
var identity = await _manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
// Write the authentication cookie
FormsAuthentication.SetAuthCookie(identity.Name, isPersistent);
}
我确实创建了一个单独的 MVC web 项目来查看脚手架登录操作,这有很大的不同。 SmartAdmin 模板已足够自定义,因此很难在不知道我在做什么的情况下开始更改内容。任何方向表示赞赏。
如果您系统中的 username
是 email
,您应该使用
var user = _manager.FindAsync(viewModel.Email, viewModel.Password);
然后在用户不为空的情况下登录。
如果 username
不是 email
,您应该先获取 user
然后检查密码
var user = _manager.FindByEmail(viewModel.Email);
bool isPasswordCorrect = await _manager.CheckPasswordAsync(user, viewModel.Password);
我可以使用任何密码进行身份验证。电子邮件必须是有效的注册电子邮件,但密码无关紧要。其他一切正常。
关于从哪里开始解决这个问题有什么建议吗?我在网络搜索中没有发现任何类似的问题。
我的看法...
我在帐户控制器中的操作...
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(AccountLoginModel viewModel)
{
if (!ModelState.IsValid)
return View(viewModel);
var user = _manager.FindByEmail(viewModel.Email);
if (user != null)
{
await SignInAsync(user, viewModel.RememberMe);
string uid = user.Id;
return RedirectToLocal(viewModel.ReturnUrl);
}
ModelState.AddModelError("", "Invalid username or password.");
return View(viewModel);
}
和 signinasync 方法...
private async Task SignInAsync(IdentityUser user, bool isPersistent)
{
// Clear any lingering authencation data
FormsAuthentication.SignOut();
// Create a claims based identity for the current user
var identity = await _manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
// Write the authentication cookie
FormsAuthentication.SetAuthCookie(identity.Name, isPersistent);
}
我确实创建了一个单独的 MVC web 项目来查看脚手架登录操作,这有很大的不同。 SmartAdmin 模板已足够自定义,因此很难在不知道我在做什么的情况下开始更改内容。任何方向表示赞赏。
如果您系统中的 username
是 email
,您应该使用
var user = _manager.FindAsync(viewModel.Email, viewModel.Password);
然后在用户不为空的情况下登录。
如果 username
不是 email
,您应该先获取 user
然后检查密码
var user = _manager.FindByEmail(viewModel.Email);
bool isPasswordCorrect = await _manager.CheckPasswordAsync(user, viewModel.Password);