2011-04-05 100 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