我很好奇为什么我需要创建一个自定义的 MembershipProvider 而不是应该做这样的事情来登录潜在用户。
[HttpPost]
public ActionResult Login(string username, string password)
{
UserUnitOfWork unitOfWork = new UserUnitOfWork();
User user = unitOfWork.UserRepository.GetByUsername(username);
if (user != null)
{
SaltedHashHelper saltHelper = new SaltedHashHelper();
if (saltHelper.VerifyHashString(username, user.Password, user.Salt))
FormsAuthentication.SetAuthCookie(user.Username, false);
}
else
{
// User cannot be verified.
}
return View();
}
如果我创建一个自定义的 MembershipProvider,那么我将不得不创建一个自定义的 MembershipUser,因为我没有使用 asp.net 成员资格表。当您不使用 aspnet 成员表时,我觉得这更让人头疼。也许我错了。
有人认为我的上述方法有什么问题吗?我很好奇。
最佳答案
您的方法很好,只要适本地加盐和散列密码并适本地保护您自己免受 SQL 注入(inject)。
内置提供程序将比您自定义的身份验证提供程序经过更好的测试,并且可能更安全,具体取决于您的实现。
关于c# - 不使用自定义成员资格提供程序的 ASP.NET MVC 登录 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969933/