流程说完了,接下对上面提到的问题解释一下:
引用
先使用URL拦截的方式去对付大多数的情况,然后少数URL搞不定的再加一个接口,让Action自己去判别。这样用两个拦截器对Action进行拦截,如果Action实现了hasPermission接口,那么就交给Action自己判断,如果Action没有该接口,就查找内部的URL和权限的对照表来判断。
这个情况比较复杂,因为是要对Action进行调用,所以要看使用的web框架来定夺。是用不同Web框架要是用不同的Web框架拦截器。所以恐怕acegi力不从心,挺多在filter里面配置一下是否要是用Action自身校验。但是想法很好,赞。
引用
你怎么把信息有效的传递给Web层和其他的Facade层进行用户友好性的提示处理?
acegi校验失败的时候会抛出AuthenticationException异常,然后放在session里面,
在错误转向页面可以这样是用
不过这么用实在太难看了,晕了。可以自己用tag来搞定
引用
很多系统需要根据权限不同,生成不同的UI组件(例如管理员的菜单和普通用户菜单就肯定不一样),这也需要在Web层的View进行控制。
acegi对View的处理就是使用tag,原来的acegi好像没有什么tag,简直是烂,现在有了tag,说一下是用的方法,但是说实话他的tag实在是不够强。
老版的web.xml
在页面中使用
ifAllGranted是说所有的权限都有,用','分割权限
可以替换成ifAnyGranted: ifNotGranted:
代码
1<authz:authentication operation="username"/>
这个是用来显示你的权限信息的。