問題タブ [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.
c# - HandleUnauthorizedRequest 内でデフォルトの 404 ページを出力する方法
AuthorizeAttribute
のオーバーライドを持つカスタムを作成しましたHandleUnauthorizedRequest
。このオーバーライドは、条件付きで応答ステータス コードを 404 に設定します。
問題は、完全な応答が次のようになることです。
デフォルトの 404 ページを送り返したい場合。何かのようなもの:
それ、どうやったら出来るの?
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実装のどこかにあると思いますが、チェックしたこのランダムなサーバー変数を使用することをどのようにして知ることができますか?
どんな照明でも大歓迎です。
asp.net-mvc - ajax呼び出しでのセッションタイムアウトの処理
jqueryを使用してasp.netmvcコントローラーアクションに対してajax呼び出しを行っています:
セッションがタイムアウトすると、Userオブジェクトがセッションに保存されるため、この呼び出しは失敗します。セッションが失われたかどうかを確認し、ログインページにリダイレクトするために、カスタムの承認属性を作成しました。これはページリクエストでは正常に機能しますが、ajaxリクエストからリダイレクトできないため、ajaxリクエストでは機能しません。
別のスレッドで、ユーザーが認証されておらず、ajaxリクエストを行う場合は、ステータスコードを401(未承認)に設定してから、jsで確認し、ログインページにリダイレクトする必要があることを読みました。ただし、これを機能させることはできません。
基本的には401に設定されますが、その後コントローラーアクションに進み、オブジェクトエラーのインスタンスに設定されていないオブジェクト参照をスローします。これにより、エラー500がクライアント側のjsに返されます。カスタムのAuthorize属性を変更してajaxリクエストも検証し、認証されていないリクエストに対してfalseを返すと、ajaxリクエストはログインページを返しますが、これは明らかに機能しません。
これを機能させるにはどうすればよいですか?
asp.net-mvc - 管理者の[承認]属性に関する質問
ASP.NET MVC 3(Razor)Webアプリケーションにエリアがある場合、すべてのコントローラーは次のようなベースコントローラーから派生します。
管理者以外のユーザーがその領域のURLにアクセスしようとすると、web.configで指定されたログインページにリダイレクトされます。
ただし、ユーザーがすでに認証されているが管理者ではない場合、これは実際には意味がありません。そのシナリオでは、HTTP 401が返されるべきではありませんか?
私の質問は、基本的に人々がこれをどのように処理するかです-彼らはカスタム承認属性を作成しますか?
asp.net-mvc - asp.net MVC 3 AuthorizeAttributeを領域に適用する
私は現在 Admin MVC 3 サイトを作成しており、各ユーザーはサイトの特定の部分にしかアクセスできません。
私のサイトの領域はユーザーの役割と同じなので、役割のパラメーターとして領域の名前を使用して、各領域に AuthorizeAttribute を配置したいと考えています。
これまでのところ、各領域のチェックをハードコーディングしているときにこれが機能するようになりましたが、すべての領域をループして Authorize フィルターを適用したいと思います。(私はこれをカスタム FilterProvider として使用しています - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578 )
これまでの私のコード(「Gcm」は私の分野の1つであり、役割でもあります):
アプリケーションのすべての領域を取得する方法を知っている人はいますか?
または、誰かがエリアごとに承認する方法についてより良いアイデアを持っている場合は、それをいただければ幸いです。
助けてくれてありがとう
asp.net-mvc - ASP.NET MVC で FormsAuthentication ログオン ページにリダイレクトされたときに役立つメッセージを表示する
プロパティAuthorizeAttribute
を含むカスタムを作成したい。Message
問題は、FormsAuthentication が指定された loginUrl にリダイレクトされることです。そのビューはどのようにして属性の Message プロパティにアクセスできますか?
たとえば、カスタム AuthorizeAttribute を使用してこのアクションを実行します
ユーザーがログインしていない場合、 /Account/LogOn (web.config の設定のおかげでFormsAuthentication
) にリダイレクトされます。ユーザーが認識できるように、ログオン ビューに「ユーザー設定を表示するにはログインする必要があります」を表示したいログオン ページにリダイレクトされた理由
c# - MVC3カスタムAuthorizeAttribute:コントローラーからオブジェクトを渡す方法
コントローラにあるすべてのログインデータを含むオブジェクトがあります(MVC3に切り替える前にプログラムされています)。
サイトに認証を追加しようとしていますが、これまでのところ、次のようになっています。
と
MyLoginObjectをAuthorizeAttributeクラスに渡す方法はありますか?そうでない場合は、少なくとも、ユーザーが許可されているかどうかを指定するオブジェクトからブール値を渡すことができますか?
編集: Zonnenbergのアドバイスに基づく私の解決策。
次に、loginobjectのインスタンス化をCustomAuthorizationに移動しました
これで、ログインは認証内で行われ、ユーザーを呼び出してコントローラーからログインにアクセスできます。
model-view-controller - MVCAuthorizeAttributeでセッションがnullになる
AuthorizeAttributeを使用して、ユーザーがページにアクセスするために18歳以上のCookieが設定されていることを確認しています。
これは問題なく動作しますが、私は今少し拡張しています。すべてのビューがこの属性を使用するため、サイトを早期に起動できるようにするために使用しています。add?VIEWSITE = trueを任意のURLに使用すると、Session変数が設定され、サイトへのアクセスが許可されます。それ以外の場合は、保留ページに移動します。
これは、ページを初めて実行するときに正常に機能します。しかし、私はページで出力キャッシュを使用しています、そして次にページがロードされるとき、私のhttpcontext.sessionはnullですか?
属性が正しい順序で実行されるように、属性に「順序」変数を追加しました。
私の属性からのスニピット:
ページがキャッシュからロードされた後、セッション変数を読み取ったり設定したりできるようにするために、ここで欠けているものはありますか?
明確にするために、nullであるのはhttpContext.Sessionであり、具体的にはhttpContext.Session["VIEWSITE"]ではありません。
asp.net-mvc-3 - ログに記録されていないユーザーからのコントローラーメソッドを許可する
ほとんどすべてのメソッドをRole=Adminに制限して、クラスが次のようにインスタンス化するコントローラーがあります。
[承認(ロール=管理者)]
すべてのメソッドがこのチェックを行います。この属性メソッドをメソッドごとにオーバーライドして、他のユーザーロールを許可できることはわかっていますが、このクラスのメソッドの1つに対する承認チェックを完全に削除したいと思います。
そのための構文は何ですか?
どうも
asp.net-mvc - AuthorizeAttributeからコントローラーにデータを渡すにはどうすればよいですか?
HTTPヘッダー内で送信されるいくつかのOAuthクレデンシャルを検証するカスタムAuthorizeAttributeを作成しました。私はこれらの資格情報のいくつかを使用して、誰がリクエストを行っているかを識別しています。AuthorizeAttributeでこの情報を解析したら、データをコントローラーのインスタンス変数に割り当てることができるように、この情報を渡す方法はありますか?次に、コントローラーのどこにでも、要求側のIDがあります。