但是由于没有 Session 的概念,那么检索它的最佳方法是什么?
我不明白这一点。当然MVC3中有Session的概念。我认为这取决于您想做什么,并且您需要问自己几个问题:
- 关闭选项卡会自动注销我的用户吗?
- 会议何时结束?(例如按“注销”,超时)
我发现它最有用的方式是利用 ASP.NET FormsAuthentication 机制和会话变量。
这是我编写的代码中的一个示例:
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 变量中。
这允许进行后备,这意味着:
- 尝试解析会话变量,如果没有
- 检查用户是否登录,并再次从数据库中解析用户
- 如果用户未登录 - 实现您的逻辑。
这对我来说很好。希望能帮助到你。