我现在要做两个权限,
1.用户登录的时候,判断他是否有权限访问这个页面
2.在可以访问的页面中,点击按钮,判断其是否有此功能按钮的权限。
思路:
1.输入用户名密码<Login.aspx>后,我需要先去数据库中需要判断用户名密码是否存在<User.cs>,如果不存在我就不用判断权限了。
2.新建类文件<PermitCotroller.cs>功能之一是返回功能菜单,在<User.cs>中处理为XML。功能之二是返回可以访问的权限列表存到dataset中,在<User.cs>中放到Session里。
3.<User.cs>类是用于判断用户是否存在的,如果不存在,返回false,若存在,则调用<PermitCotroller.cs>中的方法将准备工作(生成功能菜单XML,处理功能列表为Session)完成。
4.完成准备工作后就可以跳转页面了,跳转页面的时候很关键。需要判断是否有权限访问该页面。
5.新建一个类文件做权限控制器<PermitExecuter.cs>
6.在权限控制器中继承System.Web.UI.Page,并重写Page_Load事件,另一个重要的操作就是,在aspx中,需要继承这个权限控制器<PermitExecuter.cs>,这样的话,每个页面跳转的时候都会先执行这个页面,从而达到权限判断的效果。
7.在权限控制器中还有两个重要的方法,就是本文要处理的两个权限问题,一是页面访问权限检查,一是按钮权限检查。(这些功能均已存放到Session中,所以去Session中查找是否存在就可以了)。
8.Session中数据大致如下:
userID funitemID pagepath
1 1 add.aspx
1 2 update.aspx
9,我建了一个类文件<PermitCommand.cs>用于存用户的所有操作,用于点击某按钮的时候,传参数,判断权限。
public static class PermitCommand
{
public const int AddPersion = 0;
public const int DelPersion = 1;
}
10.OK,所有思路完成,上各类文件代码:
<Login.aspx.cs>
<User.cs>
<PermitController.cs>
<Main.aspx.cs> 访问的页面:
<PermitExecuter.cs>权限控制器:
流程是这样的:
在login.aspx中登录即将跳转Main.aspx,
在User.cs中对该用户进行初步判断,
在跳转Main.aspx中进行页面访问权限检查和按钮权限检查。
<PermitCotroller.cs>权限控制器。
<PermitExecuter.cs>提功User.cs进行准备操作。
<PermitCommand.cs>存按钮的功能ID(常量)
OK!