0

VS10 ASP.NET MVC4 .NET Framework 4 でアプリケーションを作成しています。VS10 が提供する WEB ASP.NET MVC 4 アプリケーションのモデルを使用しました。作成後、適用モデルを変更せずに、ASP.net 管理ツールを使用してメンバーとロールを作成したところ、すべてうまくいきました。使うつもりだった

Roles.IsUserInRole

特定のユーザー グループのビューをテイラーする関数。しかし、サインインした後、機能が機能しないか機能しません

Authorize(Roles:="ロール名")

コントローラの特定の機能に適用されます。原因: 各テストユーザーがサインインした後に ApplicatioName が失われたことを確認しました (方法はわかりません: ソースへの変更はまだ行われていません)。SimpleRoleProvider は、現在の ApplicationName 値をプログラムで変更することを許可していません (特定の例外が発生します)。 )。Role Provider を変更せずにこの問題を解決することはできますか?

4

2 に答える 2

0

私の問題の説明を見つけたと思います。MSDN の SimpleMembershipProvider クラスの ApplicationName プロパティに関する章で、次のメモを見つけました。

WebSecurity.InitializeDatabaseConnection メソッドへの呼び出しを使用して SimpleMembershipProvider クラスが初期化されている場合、このプロパティはサポートされず、NotSupportedException 例外がスローされます。ただし、WebSecurity.InitializeDatabaseConnection メソッドが呼び出されておらず、標準の ASP.NET メンバーシップ プロバイダーを使用するようにサイトを構成している場合、このプロパティは標準のメンバーシップ プロバイダーに渡されます。詳細については、SimpleMembershipProvider クラスの概要を参照してください。

最初は私にははっきりしませんでした。しかし、多くのテストの後、私は理解できなかったと思います。SimpleMemebrshipProvider には強力ですが制限された目標があり、MVC 4 テンプレートの Account Controller での実装がその例です。この必要性を無効にするため、ApplicationName を処理しませんが、この動作により、ApplicationName の設定を必要とする「ロール」の機能へのアクセスが制限されます。私の仮説とメモの理解を確認するために、次のものを削除しました。

<InitializeSimpleMembership()> 

アカウントコントローラーから。すべてがうまくいき、必要なすべての機能を使用できました。WebMatrix を使用できなくなったため、コントローラーで何かを変更する必要がありましたが、変更はそれほど難しくありませんでした。私の結論について誰かコメントがあれば、歓迎します。

于 2013-06-22T06:30:00.630 に答える
0

デフォルトでは、MVC4 シンプル メンバーシップは正しく設定されていません。ここで同様の問題について詳しく説明しました

あなたが本質的にする必要があるのは

1) フィルター フォルダーの下のファイルを削除します。

2) application_start() で SimpleMembership を初期化します。最適な場所は、global.asax によって呼び出される AuthConfig ファイルにあります。

3) アカウント コントローラーから初期化シンプル メンバーシップ属性を削除します。

上記のリンクで受け入れられている解決策を見ると、必要に応じてもう少し詳しく説明します。

于 2013-06-06T09:37:45.590 に答える