我在建立网站时面临一个非常基本的问题;该网站有 10 个页面,问题是当我登录一次时,我如何才能在其余页面中保持登录状态?
问问题
77 次
2 回答
1
由于此问题包含 asp.net 和会话变量的标签,因此我不确定您缺少什么。
在登录表单上:
if (authentaionSuceeded){
HttpContext.Current.Session["loggedin"]="yes";
}
在所有其他页面上(注销除外)
if (HttpContext.Current.Session["loggedin"]=="yes"){
// whatever you do for logged in users.
}
这是基本的想法。虽然我更喜欢通过提供类型安全和所有会话变量列表的扩展方法/类来访问会话变量。该答案中的示例在 VB 中,但您可以在 c# 中执行相同的操作。
于 2012-11-11T06:59:41.650 回答
-1
有一些可能的解决方案如下:
- Cookies:将会话信息存储在页面标题中的 cookie 中
- 隐藏表单字段:在页面表单的一些隐藏字段中维护会话信息
在每个选项中,您需要在服务器端生成会话密钥(一些加密的唯一密钥),并且在后续请求中,您应该能够验证该会话密钥。最好在每个请求上重新生成一个新的会话密钥并在一定时间间隔后过期。因此,对于活跃用户,它将不断获得新密钥,但非活跃用户会话将简单地过期。
于 2012-11-11T06:38:42.707 回答