最近工作项目需要增加权限访问控制,以前做需求的时候没有做进去,所以现在要加上去感觉改动比较大,而且要求也还比较高,要求控制粒度细到按钮上。以下将来详细说明如何如何IHttpModule实现:
1、需求:
a、增加登录验证,进入系统需要先登录;
b、会话保护,登录后在10分钟内无操作则再次操作时需要重新登录;
c、菜单级权限控制;
d、按钮级权限控制;
实现:
1、新建类,类实现IHttpModule接口,如果需要使用Session则还需要实现IRequiresSessionState接口,IRequiresSessionState仅是个声名而已,不需要实现任何方法;
2、注册事件
Init方法中对content注册事件,登录建议使用PreRequestHandlerExecute来做验证;具体验证方法则有很多了,根据个人喜好实现;
这样就实现了登录控制;事件参数sender为HttpApplication,可取得Request.Url,这样可取得请求url地址,即可对页面级权限进行控制。
3、控制页面按钮权限,创建一个Js文件,在Js文件里我是使用了Jquery在对当前页面对象做访问,配置页面权限按钮时,将控件的id或满足Jquery查询条件的值写入配置表,建一个ashx的handle处理类,返回请求页面的可用或不可用对象;再将相应对象hide或show就OK了。