しかし、Sessionの概念がないので、それを取得するための最良の方法は何でしょうか?
わかりません。もちろん、MVC3にはセッションの概念があります。それはあなたが何をしたいかによると思います、そしてあなたがあなた自身に尋ねる必要があるいくつかの質問があります:
- タブを閉じると、ユーザーは自動的にログアウトされますか?
- セッションはいつ終了しますか?(例:「ログアウト」を押す、タイムアウト)
私が最も役立つと思う方法は、ASP.NETFormsAuthenticationメカニズムとセッション変数を活用することです。
これが私が書いたコードの例です:
var curUser = context.Session["User"] as ViewUser;
if (curUser == null)
{
// Generate token from given FB access token
var token= 'your token';
// Set the forms authentication auth cookie
FormsAuthentication.SetAuthCookie(token, false);
// Get user details to put inside the session vars
var UserInstance = getUser(token);
// Put user details in session vars
context.Session["User"] = UserInstance;
}
トークンはoAuthなどのためのものであり、そのようにしてシステムが構築されました。代わりにユーザーのIDを入力できます。
これでFormsAuthinticationが利用されます。これは、セッションを通じて存続する保護されたCookieもあり、ユーザーモデルをSession変数内に配置したため、トークンで毎回データベースをアドレス指定する必要がないためです。
これにより、フォールバックを実行できます。つまり、次のようになります。
- そうでない場合は、セッション変数を解析してみてください
- ユーザーがログインしているかどうかを確認し、データベースからユーザーを再度解析します
- ユーザーがログインしていない場合-ロジックを実装します。
これは私にとってうまくいきました。それが役に立てば幸い。