c# - 不使用自定义成员资格提供程序的 ASP.NET MVC 登录 Controller 方法?

标签 c# security asp.net-mvc-3 asp.net-membership

我很好奇为什么我需要创建一个自定义的 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/

相关文章:

c# - 我的 wcf 应用程序中是否存在安全错误?

c# - 如何在 C# 中使用列表创建循环

asp.net-mvc-3 - 自定义表单例份验证 + MVC3 + AuthorizeAttribute

asp.net-mvc-3 - MVC 3 中忽略 OutputCache 属性

c# - 控件如何处理该控件外的鼠标单击?

c# - 没有源码目录怎么拖放文件?

c# - 如何查询所有子文件夹?

c# - 何时在 C# 中使用 Shift 运算符 << >>?

mysql - nodejs/socket.io 与 node-mysql |安全困惑

security - Jenkins 中 HTTP 404 页面 URL 的自定义页面