我有一些關於會話管理的問題。需要自定義會話管理器幫助 - 如何訪問會話信息?
我決定使用自定義會話管理器類來在我的網站上對會話狀態進行更多的控制 。我已經開始使用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關聯的表中的示例。 這是什麼目的?最佳做法是什麼?
謝謝你的時間。