2011-08-07 15 views
1

私はカスタムMembershipProviderを作成する必要があり、潜在的なユーザーにログインするためにこのようなことをする必要がないのは非常に興味があります。私は、カスタムのMembershipProviderを作成した場合、私はasp.netメンバーシップ・テーブルを使用していないので、カスタムメンバーシッププロバイダを使用しないASP.NET MVCログインコントローラメソッド?

[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(); 
} 

その後、私は、カスタムたMembershipUserを作成する必要があります。私はあなたがaspnetメンバーシップテーブルを使用していないときに頭痛の多くであるように感じる。たぶん私は間違っています。

誰も私の上記のアプローチに間違っていますか?私は興味がある。

+0

誰がカスタムメンバーシッププロバイダを作成しなければならないと言ったのですか? –

+0

私はちょうど "あなたが"私がオンラインで見たことのすべてからそれを行うべきであるという印象を得ました。 – Dietpixel

+0

組み込みプロバイダーは使用しないでください。ここに答えがあります:http://stackoverflow.com/questions/1385042/asp-net-mvc-forms-authentication-authorize-attribute-simple-roles –

答えて

1

カスタムメンバーシッププロバイダを作成する必要はありません.ASBが提供するものをそのまま使用できます。実際には、独自の認証方式を実装することは、それ以外の方法があれば、常にお勧めできません。最悪の場合は、実際に別の振る舞いをする必要があるプロバイダメソッドをオーバーライドするだけです。

これが悪い考えである理由の詳細については、OWASP Top 10 for .NET developers part 7: Insecure Cryptographic Storageをご覧ください。

3

パスワードを適切に塩とハッシュして、適切にSQLインジェクションから自分自身を守ってください。

ビルドされたプロバイダは、カスタムビルドされた認証プロバイダよりも優れたテストを受け、実装によってはより安全です。

関連する問題