流程說完了,接下對上面提到的問題解釋一下:
引用
先使用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"/>
這個是用來顯示你的權限信息的。