5

SimpleMembersihp を MVC4 Web に追加するのは簡単なことだと思います。そうではありません。テンプレート化されたコード (C# など) はそれをサポートするのに適していますが、web.config はほとんど不可知論的です。つまり、特定のセキュリティ メカニズムを構成する要素がありません。私はPluralsightに関するScott AllenのMVC4チュートリアルに従っていました.aspnet-MembershipとEFのものを混ぜたものです。何かを見逃したのかもしれませんが、C# メンバーシップ クラスは aspnet-Membership と対話していませんでした。SimpleMembership を実行していました。そのため、aspnet-Membership を削除しましたが、PackageManager を「update-database」に取得できません。「WebSecurity.InitializeDatabaseConnection メソッドを呼び出す必要があります...」と不平を言います。そのため、呼び出しで _AppStart.cshtml ファイルを追加しましたが、PM は認識していないようです。_AppStart.cshtml:

@using WebMatrix.WebData;
@{
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true);
}

Web.config:

  <appSettings>
    <add key="enableSimpleMembership" value="true" />
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

   <roleManager enabled="true" defaultProvider="simple">
     <providers>
        <clear/>
        <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
      </providers>
    </roleManager>


    <membership defaultProvider="simple">
      <providers>
        <clear/>
        <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
      </providers>
    </membership

Configuration.cs:

protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context)
{
    context.Departments.AddOrUpdate(d => d.Name,
      new Department() { Name = "Engineering" },
      new Department() { Name = "Sales" },
      new Department() { Name = "Shipping" },
      new Department() { Name = "Human Resources" }
      );

    SimpleRoleProvider roles = new WebMatrix.WebData.SimpleRoleProvider();
    SimpleMembershipProvider membership = new SimpleMembershipProvider();
    if (!roles.RoleExists("Admin"))
    {
        roles.CreateRole("Admin");
    }

    //if (membership.GetUser("ej", false) == null)
    //{
        //    membership.CreateUserAndAccount("ej", "FluffyBunny@1", false);
        //    string[] u = { "ej" };
        //    string[] r = { "Admin" };
        //    roles.AddUsersToRoles(u, r);
        //}
}

役割「管理者」が作成されていません。

4

2 に答える 2

11

コードを追加してみる

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true);

あなたのApplication_Startにglobal.asax.cs

_appStart.cshtmlMVC では使用されません。

于 2012-12-30T11:36:21.980 に答える
0

可能な使用 _AppStart.cshtml MVC4 では、新しいファイルを作成してルート フォルダーに配置します。

@{
 // Initialize WebMail helper
 WebMail.SmtpServer = "your-SMTP-host";
 WebMail.SmtpPort = 25;
 WebMail.UserName = "your-user-name-here";
 WebMail.Password = "your-account-password";
 WebMail.From = "your-email-address-here";
 }

http://www.asp.net/web-pages/overview/ui,-layouts,-and-themes/18-customizing-site-wide-behavior#configuring_email_settings

于 2015-03-31T07:40:42.950 に答える