权限控制的思考
企业OA或者其他信息系统,权限控制是一个非常重要的模块,
权限控制包括功能权限和数据权限,这里主要思考功能权限控制。
给出几种种解决方法,可以单独使用或者结合一起使用:
一:使用拦截(Filter)
权限功能通过请求url路径进行管理,预先在数据库中存储用户(一般基于角色)允许访问的url,
然后在每一次http请求时进行验证,如果有权限,放行,否则拦截。
代码
public class SecurityModule : IHttpModule,IRequiresSessionState
{
#region IHttpModule 成员
void IHttpModule.Dispose()
{
}
void IHttpModule.Init(HttpApplication context)
{
context.AcquireRequestState += new EventHandler(ValidateRequest);
}
private void ValidateRequest(object sender, EventArgs e)
{if 验证通过就直接放行啦。elsecontext.Server.Transfer("/Error.aspx");
}
}
然后在httpModules 中进行相关设置即可
二:使用基类(实现和一差不多。不再介绍)
三:利用Spring.net AOP进行切面管理
在每个功能点执行时进行前置切入,进行权限验证,如果不通过就抛出异常或者跳转等等,关于前置切入的实现,可以参考上一篇文章,非常相似
通过.net的特性,可以对方法进行分类,如只读/读写/拒绝等等