2

ASP.Net MVC 4 Web サイトにログインした後、ユーザーに関する静的データを保持する必要があります。すべてがキャッスル ウィンザー コンテナに接続されています。

ログイン プロセスは認証サービスを呼び出します。このサービスは、ユーザー データを返します。このサービスは、セッションの後半の処理やその他のサービス呼び出しに必要です。

この投稿を見てきました: MVC Custom Authentication, Authorization, and Roles Implementation。しかし問題は、静的クラスで servicelocation を使用していることです。これには問題があります。

このような設定で、セッション全体で使用するためにユーザーデータを保存するにはどうすればよいですか?

編集:私は永続的な Cookie を使用しているため、ユーザーがサイトに戻ったときに、どうにかしてユーザーデータを再作成する必要があります。

4

1 に答える 1

3

LogOn メソッドで、ユーザーを承認し、データベースからユーザーの詳細を取得したら、それらをセッションに保存できます。

UserDetail details = ...
Session["user_details"] = details;

後で必要になったときに:

UserDetail details = Session["user_details"] as UserDetail;

別の方法として、存在する場合はセッションからこの情報を読み取り、存在しない場合はデータベースにクエリを実行して取得するカスタム MembershipProvider を作成することもできます。

もう 1 つの可能性は、ユーザーの詳細を含むカスタム プリンシパルをセットアップし、セッションから読み取ることができる AuthorizeCore メソッドをオーバーライドすることによって、カスタムの Authorize 属性を持つことです。

于 2012-10-11T09:30:18.650 に答える