2011-04-05 126 views
3

我正在研究一種具有3種用戶的Web應用程序。web.config中的會話狀態

爲避免同一用戶的多次登錄,我在表中使用了一個登錄列,登錄後將變爲1,登出後變爲0。如果他沒有註銷就關閉瀏覽器窗口,我已經使用會話狀態來註銷用戶。

<system.web>  
    <sessionState mode="InProc" timeout="15" cookieName="student"/> 

的Global.asax:

void Session_End(object sender, EventArgs e) 
{ 
     int sid = Convert.ToInt32(Session["student"]); 
     candidate.signoutUser(sid); 
} 

但有三種類型的用戶。我無法添加多個sessionState。有沒有辦法解決這個問題?

+0

我不明白3種用戶(角色)和多種會話狀態之間的關係 – Anuraj 2011-04-05 05:01:02

+0

有三種類型的用戶。管理員,教師和學生。我想避免多人登錄。我使用上面提到的方法來避免學生 – Kanishka 2011-04-05 05:03:28

回答

4

爲什麼不將用戶類型添加到其會話狀態?

這樣的:

Session["user"] = "Strudent_" + userId; 

,然後分析你的單次找到ID和用戶類型:

var userType = Session["user"].ToString().split('_')[0]; 
var userId = Convert.ToInt32(Sessionp["user"].ToString().split('_')[1];) 

但我建議使用會話狀態:

  • 一個for userId
  • one for userType

如果您不想使用多個會話狀態,也可以使用userId從數據庫查詢用戶類型。

+1

的多重登錄,這將起作用。 ty。有沒有辦法添加多個會話狀態。我收到一條錯誤消息,說:「錯誤73部分必須每個配置文件只出現一次,有關例外情況,請參閱幫助主題。」 – Kanishka 2011-04-05 05:06:44

+1

不,你的webconfig只能有一個sessionState標籤。只需使用一個,並從SessionState標記中刪除cookieName =「student」即可。 – 2011-04-05 07:33:38