最近开始接触asp.net,开发一个在线考试系统,其中涉及到用户管理和权限控制,要求如下:
1. 用户需要经过验证方能进入系统;
2. 不同级别的用户登录后看到的内容不同;
3. 管理员可进行管理操作,如角色、用户、权限的增删改查;
4. 防止非系统用户直接在地址栏输入某一页面地址进入系统,从而绕过登录页面;
5. 防止低权限用户登录系统后在地址栏输入高权限用户才能访问的某一页面地址,从而实现越权访问;
6. 同一用户多地登录,则后登录的挤掉先登录的,类似 QQ对于第2个问题可以采用重定向的方法来解决
在网站创建Admin和Tester两个文件夹,分别存放管理员和考试人员使用的文件,然后在登录界面进行重定向。
//返回重定向URL
string returnUrl = FormsAuthentication.GetRedirectUrl(loginUser.UserID, false);
if (returnUrl.Equals(FormsAuthentication.DefaultUrl))
{
//根据角色,确定跳转页面
if (RoleCheck.IsAdmin())
returnUrl = "~/Admin/Default.aspx";
else
returnUrl = "~/Tester/Default.aspx";
}
//重新定向到指定的URL页面
Response.Redirect(returnUrl);
对于第4个问题可以采用Session来实现,在本项目中新建一个SessionClass类,在里面实现两个获取和设置UserID的方法
public static Entity.User GetLoginUser()
{
if (null == HttpContext.Current.Session["loginUser"])
return null;
return (Entity.User)Tool.SerializeHelper.Deseria