3

ASP.NET MVC4 インターネット アプリケーションのデータ アクセス層に、認証とセキュリティに関するすべての懸念事項を移動しています。ログイン、ログアウト、ユーザーの作成などはすべて問題ありませんが、ユーザーをロールに追加する際につまずきがあります。

ユーザー アカウントを作成した後、それらをいくつかのデフォルト ロールに追加したいと考えています。その方法は次のようになります

public static string CreateUserAccount(string username, string password)
{
    WebSecurity.CreateUserAndAccount(username, password);
    var roleProvider = new SimpleRoleProvider();
    roleProvider.AddUsersToRoles(new[] {username}, new[] {"MeterInfo", "SiteInfo", "AMRInfo", "InstallImages"});
    return username + " Account Created";
}

WebSecurityアカウントを作成するための への呼び出しは問題ありませんが、 を使用するSimpleRoleProviderとこのエラーが発生します

「WebSecurity」クラスの他のメソッドを呼び出す前に、「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出す必要があります。この呼び出しは、サイトのルートにある _AppStart.cshtml ファイルに配置する必要があります。

は、起動時に global.asax によって呼び出される でInitializeDatabaseConnection既に処理されています。AuthConfig

AssetRegisterDataLayer.DataAccess.Security.InitializeSecurity();

私の DataAccess レイヤーで呼び出されるメソッドは次のようになります

public static void InitializeSecurity()
{
    WebSecurity.InitializeDatabaseConnection("AssetRegisterDb","UserProfile","UserId","UserName", false);   
}

[InitializeSimpleMembership]この問題は、アプリケーションの開始時に WebSecurity イニシャライザを呼び出す代わりに、Accounts コントローラが属性で装飾されている MVC4 のすぐに使用できる構成を使用する場合に発生することを見てきましたが、ここではそうではありません。ロール以外のすべての WebSecurity が機能する理由を知っている人はいますか?

どうもありがとう

4

1 に答える 1