0

MVC4 Simple Membership プロバイダーを使用するアプリケーションがあります。セキュリティ上の問題に対処するために必要なセッション情報を設定するコードを Login メソッドに追加しました。

ブラウザーを閉じて戻ってくると、MVC の左上隅にログインしたことが表示され、User.Username プロパティはまだ入力されていますが、そこに入力した余分なものは明らかにそうではありません。

この「認証」はいつ、どこで行われますか? Global.asax の Application_Start で要求とユーザー オブジェクトを確認しようとしましたが、実行しても null のままです。

その認証パイプラインのどこかに、メソッドをオーバーライドまたは呼び出して、必要なものをより適切に抽出できる場所はありますか?

ありがとう!

4

1 に答える 1

1

"Remember me" 機能は、Simple Membership やその他のメンバーシップとは関係ありません。また、使用時に実際の「ログイン」は発生しません。これは、ユーザーのシステムに配置される永続的な Cookie であり、その Cookie はページが読み込まれるときに読み取られます。正しく暗号化されたデータが含まれている場合、ユーザーはメンバーシップの検証を再度行う必要なく、認証済みと見なされます。

何をする必要があるかは、それをどのように行っているかによって異なります。セッションにデータを保存している場合、セッションはいつでもリセットでき、セッションは認証に接続されていないため、これは悪いことです。あなたがする必要があるのは、必要なデータがセッションにあるかどうかを確認し、そうでない場合は再構築することです。このようにして、後で戻ってきたとき、またはセッションがリセットされたときに機能します。

セッションはスケーリングがうまくいかないため、おそらく使用すべきではありません。より良い選択は、Controller クラスの OnAuthorization メソッドにフックし、そこで必要なことを行うことです。そうすれば、セッションが何であるかどうかに関係なく、すべてのページ要求で行われます。

もう 1 つのオプションは、カスタム AuthorizationFilter を作成することです。

于 2013-07-13T18:05:44.580 に答える