通过filter判断用户权限的问题 小弟我在写一个类似framework的东西,可以集成各个已有的功能模块,并通过分配权限控制用户访问。 我把每个模块的访问权限作为一个权限,可集成成角色分给各个用户。 就权限检查这里,我的思路是这样的: 1:通过filter进行权限检查,这样每个请求就都会自动检查了 2:在filter中进行权限检查时,只能根据客户端请求的uri和该用户已拥有权限的模块uri进行匹配,如果有则为有权限,如果没有则为无权限。 但现在面临以下问题: 1)有的模块有多个页面和action,只有一个入口。这样我只能判断入口的uri用户是否具有,但其它页面就无法判断了。因为其它页面的入口并未在系统注册。 2)每个请求都进行这样的判断会不会效率太低? 
我也考虑过在每个页面和action的开头写权限校验代码,但这样也很麻烦,因为角色是由管理员定义的。 
请高手指点一下我这种思路的错误? 

解决方案 »

  1.   

    1)有的模块有多个页面和action,只有一个入口。这样我只能判断入口的uri用户是否具有,但其它页面就无法判断了。因为其它页面的入口并未在系统注册。 肯定是所有页面的uri都应该做权限判断的。建议你可以将一些权限等同的页面放入同一个目录下,比如需要manager权限的便放入manager目录,而需要注册用户才能访问的放入user目录,然后Filter拦截时,只需对目录拦截。这样可以适当减轻权限与资源间的映射关系的配置。2)每个请求都进行这样的判断会不会效率太低? 效率不会低,其实一些比较流行的框架如Acegi的原理也是通过Filter来管理的。