問題タブ [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 に答える
2242 参照

c# - HandleUnauthorizedRequest 内でデフォルトの 404 ページを出力する方法

AuthorizeAttributeのオーバーライドを持つカスタムを作成しましたHandleUnauthorizedRequest。このオーバーライドは、条件付きで応答ステータス コードを 404 に設定します。

問題は、完全な応答が次のようになることです。

デフォルトの 404 ページを送り返したい場合。何かのようなもの:


デフォルトの ASP.NET 404 ページのスクリーンショット


それ、どうやったら出来るの?

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

asp.net-mvc-2 - MVC2 AuthorizeAttribute-ここで何が起こっているのですか?

バックグラウンド

プロジェクトレベルのweb.configファイルでフォーム認証が有効になっているMVC2プロジェクトがあります。

カスタムMembershipProviderもそこで宣言されています:

[承認]属性で装飾されたインデックスアクションがあります。

流れを感じる

プロジェクトをデバッグすると、最初にweb.configで指定されている〜/ Account/LogOnコントローラー/アクションにリダイレクトされます。

注:この時点で、コントローラーの「ユーザー」プロパティはNullです。

ModelStateを確認した後、それは私のMembershipService、別名AccountModels.ValidateUser(username、password)に移動します。

これはMagicMembershipProvider.ValidateUser(username、password)に行きます:

最終的にBaseMembershipProvider.ValidateUser(username、password)に移動します。

サーバー変数は、すべての呼び出しをインターセプトして認証を行うカスタムisapi.dllによって早い段階で設定されます。そこに値がある場合、ユーザーは本物と見なされます。このメソッドは単純なブール値を返します。NO WHERE ELSE IN MY CODEは、この変数が参照または渡されます。

このブール値は、(より適切な単語がないために)実行ツリーに戻され、LogOn(string returnUrl)すべてを開始した元のメソッドに戻されます。

キッカー

さて、この時点で、どういうわけか魔法のようにUserプロパティはnullではなくなり、User.Identity.Nameプロパティはサーバー変数からMagicUserNameに設定されます。 私はこれをしませんでした

どうした?

この動作は私が望んでいるものではありませんが、フレームワークにこれを行うように指示したことがないため、どこで/どのように停止するかわかりません。デフォルトのAuthorizeAttribute実装のどこかにあると思いますが、チェックしたこのランダムなサーバー変数を使用することをどのようにして知ることができますか?

どんな照明でも大歓迎です。

0 投票する
8 に答える
74876 参照

asp.net-mvc - ajax呼び出しでのセッションタイムアウトの処理

jqueryを使用してasp.netmvcコントローラーアクションに対してajax呼び出しを行っています:

セッションがタイムアウトすると、Userオブジェクトがセッションに保存されるため、この呼び出しは失敗します。セッションが失われたかどうかを確認し、ログインページにリダイレクトするために、カスタムの承認属性を作成しました。これはページリクエストでは正常に機能しますが、ajaxリクエストからリダイレクトできないため、ajaxリクエストでは機能しません。

別のスレッドで、ユーザーが認証されておらず、ajaxリクエストを行う場合は、ステータスコードを401(未承認)に設定してから、jsで確認し、ログインページにリダイレクトする必要があることを読みました。ただし、これを機能させることはできません。

基本的には401に設定されますが、その後コントローラーアクションに進み、オブジェクトエラーのインスタンスに設定されていないオブジェクト参照をスローします。これにより、エラー500がクライアント側のjsに返されます。カスタムのAuthorize属性を変更してajaxリクエストも検証し、認証されていないリクエストに対してfalseを返すと、ajaxリクエストはログインページを返しますが、これは明らかに機能しません。

これを機能させるにはどうすればよいですか?

0 投票する
4 に答える
2126 参照

asp.net-mvc - 管理者の[承認]属性に関する質問

ASP.NET MVC 3(Razor)Webアプリケーションにエリアがある場合、すべてのコントローラーは次のようなベースコントローラーから派生します。

管理者以外のユーザーがその領域のURLにアクセスしようとすると、web.configで指定されたログインページにリダイレクトされます。

ただし、ユーザーがすでに認証されているが管理者ではない場合、これは実際には意味がありません。そのシナリオでは、HTTP 401が返されるべきではありませんか?

私の質問は、基本的に人々がこれをどのように処理するかです-彼らはカスタム承認属性を作成しますか?

0 投票する
3 に答える
7885 参照

asp.net-mvc - asp.net MVC 3 AuthorizeAttributeを領域に適用する

私は現在 Admin MVC 3 サイトを作成しており、各ユーザーはサイトの特定の部分にしかアクセスできません。

私のサイトの領域はユーザーの役割と同じなので、役割のパラメーターとして領域の名前を使用して、各領域に AuthorizeAttribute を配置したいと考えています。

これまでのところ、各領域のチェックをハードコーディングしているときにこれが機能するようになりましたが、すべての領域をループして Authorize フィルターを適用したいと思います。(私はこれをカスタム FilterProvider として使用しています - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578 )

これまでの私のコード(「Gcm」は私の分野の1つであり、役割でもあります):

アプリケーションのすべての領域を取得する方法を知っている人はいますか?

または、誰かがエリアごとに承認する方法についてより良いアイデアを持っている場合は、それをいただければ幸いです。

助けてくれてありがとう

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

asp.net-mvc - ASP.NET MVC で FormsAuthentication ログオン ページにリダイレクトされたときに役立つメッセージを表示する

プロパティAuthorizeAttributeを含むカスタムを作成したい。Message問題は、FormsAuthentication が指定された loginUrl にリダイレクトされることです。そのビューはどのようにして属性の Message プロパティにアクセスできますか?

たとえば、カスタム AuthorizeAttribute を使用してこのアクションを実行します

ユーザーがログインしていない場合、 /Account/LogOn (web.config の設定のおかげでFormsAuthentication) にリダイレクトされます。ユーザーが認識できるように、ログオン ビューに「ユーザー設定を表示するにはログインする必要があります」を表示したいログオン ページにリダイレクトされた理由

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

c# - MVC3カスタムAuthorizeAttribute:コントローラーからオブジェクトを渡す方法

コントローラにあるすべてのログインデータを含むオブジェクトがあります(MVC3に切り替える前にプログラムされています)。

サイトに認証を追加しようとしていますが、これまでのところ、次のようになっています。

MyLoginObjectをAuthorizeAttributeクラスに渡す方法はありますか?そうでない場合は、少なくとも、ユーザーが許可されているかどうかを指定するオブジェクトからブール値を渡すことができますか?

編集: Zonnenbergのアドバイスに基づく私の解決策。

次に、loginobjectのインスタンス化をCustomAuthorizationに移動しました

これで、ログインは認証内で行われ、ユーザーを呼び出してコントローラーからログインにアクセスできます。

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

model-view-controller - MVCAuthorizeAttributeでセッションがnullになる

AuthorizeAttributeを使用して、ユーザーがページにアクセスするために18歳以上のCookieが設定されていることを確認しています。

これは問題なく動作しますが、私は今少し拡張しています。すべてのビューがこの属性を使用するため、サイトを早期に起動できるようにするために使用しています。add?VIEWSITE = trueを任意のURLに使用すると、Session変数が設定され、サイトへのアクセスが許可されます。それ以外の場合は、保留ページに移動します。

これは、ページを初めて実行するときに正常に機能します。しかし、私はページで出力キャッシュを使用しています、そして次にページがロードされるとき、私のhttpcontext.sessionはnullですか?

属性が正しい順序で実行されるように、属性に「順序」変数を追加しました。

私の属性からのスニピット:

ページがキャッシュからロードされた後、セッション変数を読み取ったり設定したりできるようにするために、ここで欠けているものはありますか?

明確にするために、nullであるのはhttpContext.Sessionであり、具体的にはhttpContext.Session["VIEWSITE"]ではありません。

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

asp.net-mvc-3 - ログに記録されていないユーザーからのコントローラーメソッドを許可する

ほとんどすべてのメソッドをRole=Adminに制限して、クラスが次のようにインスタンス化するコントローラーがあります。

[承認(ロール=管理者)]

すべてのメソッドがこのチェックを行います。この属性メソッドをメソッドごとにオーバーライドして、他のユーザーロールを許可できることはわかっていますが、このクラスのメソッドの1つに対する承認チェックを完全に削除したいと思います。

そのための構文は何ですか?

どうも

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

asp.net-mvc - AuthorizeAttributeからコントローラーにデータを渡すにはどうすればよいですか?

HTTPヘッダー内で送信されるいくつかのOAuthクレデンシャルを検証するカスタムAuthorizeAttributeを作成しました。私はこれらの資格情報のいくつかを使用して、誰がリクエストを行っているかを識別しています。AuthorizeAttributeでこの情報を解析したら、データをコントローラーのインスタンス変数に割り当てることができるように、この情報を渡す方法はありますか?次に、コントローラーのどこにでも、要求側のIDがあります。