DNN ロールに関して、API 呼び出しに承認を適用したいと考えています。DNN 自体が、ログインしているユーザーが特定の API 呼び出しにアクセスできるかどうかをチェックするようにします。私は1つの解決策を得ましたが、私が望むものではありません。=> DNN ベースの Web API でセキュリティ/認証を処理する方法。このリンクは、このモジュールに役割を割り当てることができるように、API 承認用に別のモジュールを用意することを提案し、API 呼び出しで [SupportedModules("ModuleName")] 属性を使用して承認を制限できます。私はこの例をチェックしましたが、うまくいきません... PLZはそれを行う適切な方法を提案してくれます。
2 に答える
7.x の一部として DnnApiController を使用している限り、この属性を任意のメソッドに追加するだけで、ロールに基づく承認を要求できます。
[DnnAuthorize(StaticRoles = "MyRoleNameHere")]
"MyRoleNameHere" は、ユーザーが持つ必要があるロールの名前です。
この投稿をチェックしましたか? http://www.dotnetnuke.com/Resources/Blogs/EntryId/3329/Authorization-in-the-new-DNN-Services-Framework.aspx
これは便利だと思いました(およびあなたが参照した他の回答も)...しかし、理解するのに長い時間がかかりました!これまでにわかったことは次のとおりです。Web ブラウザを使用している場合、DNN はリクエストを受け入れ、(ログインに基づいて) アクセス許可を評価できます。リンクされたブログ エントリは、タブを一覧表示する API を使用してこれを示しています。これは、ログインに表示権限があるタブのみを表示します。別の場所 (PHP スクリプトなど) から HTTP リクエストを作成する場合、リクエストでユーザー名/パスワードを送信すると、同じ動作が見られます。
DnnAuthorize 属性を使用できますが、ロール名を直接使用すると、前述の理由で問題が発生する可能性があります。ロール名が変更された場合はどうなりますか? ただし、独自の属性を記述することはできます。基本的に、TabID と ModuleID が必要です (何らかの形、形状、またはフォーム)。そうすれば、ロール名を確認する代わりに、現在のユーザーがそのモジュールに対して持っている権限を DNN に確認させることができます。
そのためのモジュールを作成し、ロールベースのアクセス許可をモジュールに割り当て、DNN に特定のログインのタブ/モジュールをチェックさせることができます。独自の属性を記述すると、コントローラーにアクセス許可を簡単に割り当てることができます...ロールを直接指定する必要はありません。
リンクは DNN 6.2 を参照していると思うので、7 とは多少の違いがあるかもしれません。