我有一些关于会话管理的问题。需要自定义会话管理器帮助 - 如何访问会话信息?
我决定使用自定义会话管理器类来在我的网站上对会话状态进行更多的控制 。我已经开始使用Stephan Prodan的 Session Class here。你需要看一看,看看我在说什么。
1)我的第一个问题涉及如何在用户验证(或不验证)之后坚持并访问我的会话信息 。在他的例子,会话在登录/认证创建 这样:
// Create new instance of session manager
SessionManager<WorkbookProfile> sessionManager =
new SessionManager<WorkbookProfile>(10);
//Register timeout event
sessionManager.OnEntryTimeout +=
new SessionEntryTimeoutDelegate<WorkbookProfile>(sessionManager_OnEntryTimeout);
// Get the user's profile
UserProfile profile = UserProfile.GetUserProfile(_membership.GetUserNameByEmail(Login1.UserName));
//Log profile & start session
sessionManager.startSession(ref profile);
//Store on the session a user's object
sessionManager.SetData("MyData", "UserObject", user.SessionId);
OK,我明白了上面的代码。我不完全明白的是,当用户与系统交互时,我可以如何访问会话信息。例如, 采取下面的代码:
public partial class MyClass : System.Web.UI.Page
{
private UserProfile _profile;
private SessionManager<UserProfile> _session;
protected void Page_PreInit(object sender, EventArgs e)
{
_session = new SessionManager<UserProfile>(10);
}
protected void Page_Load(object sender, EventArgs e)
{
string UserName = sessionManager[profile.SessionId].UserName;
_profile = UserProfile.GetUserProfile(UserName);
}
}
在上面的代码我需要用户的用户名传递给 到`GetUserProfile方法,以便创建已认证用户的简档的一个实例 。但是,我需要 让配置文件对象访问SessionId。排序为 a Catch 22.我在这里做错了什么?我应该如何访问用户 访问的每个新页面的 会话和配置文件信息?
2)使用会话时数据库的重要性?
我的第二个问题涉及DB与会话的使用。 在Stefan的课程中,所有会话信息都存储在会话 对象中,只要用户通过身份验证,该对象就会持续存在。但是,在其他在线阅读中, ,我看到了程序员 将会话密钥存储在与fk_profileid关联的表中的示例。 这是什么目的?最佳做法是什么?
谢谢你的时间。