問題タブ [authorize-attribute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
411 参照

asp.net - コントローラーに異なる承認属性を使用して、異なる環境から同じロジックにアクセスする

フォーム認証を強制するために、ほとんどのコントローラーが Authorize 属性で装飾されている ASP.NET MVC Web サイトがあります。

Facebook アプリを介してこの Web サイトを Facebook で利用できるようにしようとしていますが、FB ユーザーには別の認証/承認を使用したいので、コントローラーで CanvasAuthorize 属性を使用したいと考えています。

問題は、コントローラー/アクションで両方を使用できないことです。これは、両方が関連するアクションにアクセスするために強制されるためですが、通常の Web サイトには Authorize のみが必要で、Web サイトにアクセスしたときに CanvasAuthorize のみが必要です。 FBから(FBアプリ経由)。

私は始めました

  1. 既存のコントローラーを「controllerhelpers」に大幅にリファクタリングする
  2. 既存のコントローラーを (authorize 属性を使用して) 作成し、controllerhelpers に関連するメソッドを使用します。
  3. 関連する controllerhelper メソッドも使用する FB アプリ用の新しいコントローラー (CanvasAuthorize で装飾) を作成します。

しかし、これは膨大な作業であり、これが進むべき道なのか、それとももっと簡単で洗練された作業方法があるのか​​ はわかりません。

もちろん、同じビューを使用したいのですが、cshtmls では特定のコントローラーの Url.Action メソッドを使用しているため、cshtmls にアクションパスを挿入するときの現在のアプローチ (たとえば、jQuery ajax Url プロパティ)たとえば、通常の Web サイトを使用する場合は「PersonalController」を使用し、Web サイトを FB アプリとして使用する場合は「FBPersonalController」を使用する if ステートメントを作成する必要があります。

この場合、PersonalController は [Authorize] で装飾され、FBPersonalController は [CanvasAuthorize] で装飾されます。

だから、どんなフィードバックでも大歓迎です;)

ありがとう!

0 投票する
5 に答える
30982 参照

asp.net-mvc - ActionName、ControllerName、AreaName を取得し、ActionFilter 属性に渡す

次のようなカスタム AuthorizationFilter を使用します。

私はこのフィルターを各アクションの上部で使用します。Is Authorized をチェックするには、アクション名、コントローラー名、およびエリア名が必要です。AuthorizeCore()use のようなメソッドでこの名前を取得する方法はありますSystem.Web.HttpContextBaseか? 答えが「いいえ」の場合、どうすればこの名前を取得して属性に渡すことができますかViewContext.RouteData.Values["Controller"]?

誰でもそれについて何か考えがありますか?

0 投票する
2 に答える
323 参照

c# - AuthorizeAttributeの再利用

MVCコントローラーをで保護していAuthorizeAttributesます。それらのクラスを独自にインスタンス化する方法はありますか?

現在、私には同じことAuthorizedAdminをするIsAdminクラスがあります。したがって、理想的にはクラスIsAdminを使用する必要があります。AuthorizedAdminそれを行う方法はありますか?

AuthorizedAdminは本当に単純なので、私は尋ねています:

一方、IsAdminクラスはより複雑で、機能を複製します。

ありがとう

0 投票する
1 に答える
1834 参照

asp.net-mvc - アクションが [Authorize(Roles = "Administrator")] でマークされている場合、MvcSiteMapProvider にノードを表示します。

現在、承認が必要ControllerIndex()アクション メソッドがあります。

Mvc.sitemapこれを配置すると、パンくずリストにそれぞれのノードが表示されなくなります。

私が欲しいのは、とにかくこのノードを表示することです...

ユーザーが認証されていないとしましょう。だから私はブレッドクラムにこれを表示したい:

現在、以下のみが表示されます:

ユーザーがCustomersノードをクリックすると、ログイン ビューにリダイレクトされます。

SiteMapVisibilityProviderの手順に従って、独自の実装を試みました。

デバッグ中、Index ノードの下にあるノードしか表示されませんでした。つまり、現在のケースでは、Add ノードだけが表示されていました。Index アクション メソッドを表すノードがデバッグ セッションに表示されませんでした。

私が望むものを達成する方法はありますか?

0 投票する
1 に答える
1505 参照

asp.net-mvc - .NetMVCアプリでの単体テストの主張

背景:クレーム/承認にはMVC4とWIFを使用しています。モックアップオブジェクトにはMoq/MvcContribを使用しています。ここを見て、MockIdentityオブジェクトとMockPrincipalオブジェクトを作成しました-それらが必要ですか?

目標:「Manager」クレームを持つユーザーのみがアクションにアクセスできるようにするクラスレベル属性を持つコントローラークラスがあります。モックユーザーを作成し、「マネージャー」の主張を持たない人がアクションにアクセスできるかどうかをテストしたいと思います。

私はモックの概念を理解していますが、データオブジェクトをモックして扱っており、必要なことを実行するために必要なプラグイン/クラス/メソッド/セットアップを理解するのに苦労しています。

前もって感謝します。

0 投票する
1 に答える
1272 参照

asp.net-mvc-3 - RoleおよびAllowAnonymousオーバーライドを使用した管理者ロールグローバルフィルター?

Rick Andersonの記事に基づいて、すべてのメソッドにログインを要求するグローバルフィルターを設定しました。ここで、さらに一歩進んで、記事のAllowAnonymous属性または[Authorize(Roles = "Staff")]によってオーバーライドされない限り、すべてのアクションが「管理者」ロールのみに許可されるようにする必要があります。アクセスする「管理者」。

LogonAuthorize属性コンストラクターのロールに追加してみました。

..しかし、これはすべてのアクションを管理者に制限し、アクションの承認属性でオーバーライドすることはできません。

0 投票する
1 に答える
762 参照

asp.net-mvc - 除外された属性を持つグローバルカスタム承認属性

私には2つの属性があります:

ActionAuthorizeAttribute私はグローバル属性として定義します。

だから私はこの3つのアイテムが必要です:

1-ログインしなかった場合(!User.Identity.IsAuthenticated):ログインページに移動しますAccounts/LogInLogInでマークされたアクションについて言及する必要がありAnonymousAllowedAttributeます。

2-ログイン(User.Identity.IsAuthenticated)およびアクションまたはコントローラーが持っているAnonymousAllowedAttribute場合、承認はtrueです(承認は必要ありません)。

3-ログイン(User.Identity.IsAuthenticated)とアクションがメソッドをAnonymousAllowedAttribute返さない場合CustomeCheck()

ご覧のとおり、オーバーライドOnAuthorization()メソッドで2番目のものを試します。

そして3番目は次のとおりです。

しかし、私がログインしなかったときは常に戻ります:

IIS 7.5エラーの詳細:

HTTPエラー401.0-許可されていません

このURLで:http://myProject/Accounts/LogIn?ReturnUrl=%2f

問題はどこだ?ActionAuthorizeAttributeこの3つの目標を達成するためにどのように実装できますか?

アップデート

私は答えを見つけます:問題は:ではなくAnonymousAllowedAttributeから継承する必要があることです。AttributeAuthorizeAttribute

0 投票する
1 に答える
2924 参照

asp.net-mvc - AuthorizeAttributeで投稿データを取得しますか?

やあ、

ユーザーをアクションに参加させる前にいくつかのデータを検証しようとしています。データが検証されない場合は、別のアクションにリダイレクトする必要があります。

問題は、AuthorizeAttribute内からアクションに送信される投稿データをどのように取得するかです。

0 投票する
1 に答える
2427 参照

forms-authentication - MVC4Authorize属性がASP.Net3.5からのフォーム認証を認識しない

以前にASP.Net3.5(VS 2008)アプリを作成したクライアント用に新しいMVC4アプリを作成しています。ログインとフォーム認証チケットを処理するゲートウェイアプリを使用して、他のいくつかのASP.Net3.5Webアプリを起動するためのゲートウェイアプリを作成しました。

他のすべてのWebアプリがフォーム認証とマシンキーセクションに対して同じ設定を持っている限り、他のすべてのアプリはフォーム認証オブジェクトを使用して、ユーザーが認証されているかどうかを確認できました。

現在、IIS5.xを使用するXP開発ボックスでVS2010と同じフォーム認証設定を使用して新しいMVC4アプリを作成しています。(これを行う必要があります)問題は、ゲートウェイアプリがログインなしでMVCアプリを正常に起動することです。ただし、Authorize属性を初期コントローラーに追加すると、MVCアプリはログインに移動し、次に起動ページに移動しますが、MVCアプリへのリンクはゲートウェイのログインページに戻ります。

これがWeb設定セクションです

助けていただければ幸いですありがとう、ポール

0 投票する
1 に答える
1321 参照

asp.net-mvc-3 - グローバル認証が機能しない - 空白のページが表示される

MVC3 サイトに非常に基本的なログイン スキームを実装しようとしています。私の理解が正しければ、 [Authorize] マークアップを各コントローラー クラスに追加する代わりに、単純にグローバル設定を実装できるはずです。これを実現するために、global.asax に以下を追加しました。

そして私のwebconfigに、次を追加しました:

その結果、結果のページは完全に空白になります。URLを見ると、ページが空であることを除いて、mvcが期待どおりにログインルートにリダイレクトしているようです。global.asax のコードをコメント アウトし、[Authorize] マークアップを各コントローラーに直接配置すると、期待どおりに動作します。

回避策として、私が読んだ MVC2 のベスト プラクティスを実装しました。つまり、BaseController:Controller クラスを作成し、それに [Authorize] マークアップを追加してから、すべてのコントローラーの固有性を継承するように変更します。コントローラーの代わりにベースコントローラー。

それは今のところ十分に機能しているようです。

しかし、global.asax の実装が機能しないのはなぜでしょうか?