用户ID的变量,在整个页面创建过程中可访问.(而不是session)
本文关键字:访问 过程中 session 创建 变量 ID 用户 | 更新日期: 2023-09-27 18:15:34
我目前在我的web应用程序中使用会话来保存用户ID。我读了很多关于会话是邪恶的,所以我的计划是找到另一个解决方案。
所以我的下一步是使用加密cookie。例如:
userInformation: ENCRYPT(UserID,subdomain,someComputerUniqueValue,hashvalueOftheString)
每个用户都有自己的子域,所以UserID和子域必须匹配。但是。现在,我几乎在每个页面都调用会话值来获取userID。我想把它改成某种变量,但是什么变量呢?!我现在在httpmodule中设置会话值。在
public void Application_PreBeginRequest
是否有可能在application_prebeginRequest中创建一个变量,并在页面创建期间在其他地方读取它。例如在母版页中,在内容页中。或者在特定页面上使用的类。当页面创建并发送到客户端时,该变量应该终止。
我要找什么样的变量?它是全局变量吗?如果不是,什么是全局变量?
感谢阅读!这张r .
编辑:这个cookie不是用于身份验证的。我想保存连接到子域的用户的ID,所以我不必每次访问页面时运行"SELECT ID from account where子域='somethin'"查询。
可以将需要的内容存储在HttpContext.Current.Items中。放置在其中的项将仅在当前web请求期间存在,并且将在您的web应用程序中全局可用。
// Global.asax
void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Items["hello"] = DateTime.Now;
}
// Default.aspx
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = HttpContext.Current.Items["hello"].ToString();
}
}
顺便说一下,在Application_BeginRequest事件中,Session对象不可用。
获取关于HttpContext.Current的更多信息。
一旦用户通过了身份验证,为什么不使用FormsAuthentication.SetAuthCookie登录他们呢?
您可以检索当前登录的用户使用HttpContext.Current.User.Identity.Name.
会话不是"邪恶的"会话存储在服务器上,对于您建议的少量数据,它可以很好地扩展。