0

[Authorize(Roles = "admin")] 属性の使用に問題があります。

[Authorize(Roles = "admin")]
    public ActionResult GetAllLocations()
    {

次のエラーが表示されます

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

私は自分のデータベースで最初に EF 5 コードを使用して MVC 4 アプリケーションを構築しました。

少し背景:

  • MembershipProvider から継承したカスタム メンバーシップ プロバイダーを作成しました

  • この問題についてこのサイトで多くの質問を見てきましたが、答えが見つかりませんでした。

  • いくつかの回答で、メンバーシップ プロバイダーを無効にする方法を見ました

このような:

    <add key="enableSimpleMembership" value="false"/>
    <add key="autoFormsAuthentication" value="false"/>

これは、カスタムメンバーシッププロバイダーを実装した方法です

 <membership defaultProvider="ATWMembershipProvider">
  <providers>
    <clear/>
    <add name="ATMMembershipProvider" type="AroundTheWorldWeb.Infrastructure.AuthenticationProvider.ATMMembershipProvider"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         equiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5"
         minRequiredPasswordLength="6"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10" applicationName="myApplication" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <remove name="AspNetSqlRoleProvider" />
    <add name="AspNetSqlRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <!-- note: WebMatrix registers SimpleRoleProvider with name
     'AspNetSqlRoleProvider'. I don't know why but i kept it. -->
  </providers>
</roleManager>
4

1 に答える 1

0

テンプレートから MVC 4 を作成することで、この問題を修正しました。空のテンプレートを選択すると、いくつかの DLL がロードされていないと思います。だから私はテンプレートからそれを作成し、すべてのアカウントのメソッドをオーバーライドし、カスタムメンバーとロールプロバイダーも実装しました

于 2013-07-29T18:11:21.797 に答える