【发布时间】:2012-02-14 21:15:39
【问题描述】:
我有一个旧版 UserID (int32),我希望将其链接到 asp.net 成员资格。我已经在数据库上设置了链接表,对此我很满意。问题是在 Web 应用程序中将 UserID 存储在何处,以便在需要时可以轻松访问。
我决定存储它的最佳位置是登录控件的 LoggedIn 事件中 FormsAuthenticationTicket 的 UserData 部分。我第一次尝试使其可访问是在我的 BasePage 类的 PreInit 中提取它。这样做的问题是,当 UserControls 需要 UserID 时,它会变得混乱。
是否可以仅将其包装在 Utilities 类中的静态方法或属性中,如下所示:
public static int UserID
{
get
{
int userID = 0;
if (HttpContext.Current.User.Identity is FormsIdentity)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
userID = Int32.Parse(ticket.UserData);
}
return userID;
}
}
这似乎可行,但我不知道我是否在这里违反了一些不成文的规则。我认为所有这些东西都在内存中,所以这种访问没有很大的开销。
【问题讨论】:
标签: asp.net asp.net-membership