隨筆 - 10, 文章 - 0, 評論 - 7, 引用 - 0
          數據加載中……

          Acegi使用2

          流程說完了,接下對上面提到的問題解釋一下:

          引用

          先使用URL攔截的方式去對付大多數的情況,然后少數URL搞不定的再加一個接口,讓Action自己去判別。這樣用兩個攔截器對Action進行攔截,如果Action實現了hasPermission接口,那么就交給Action自己判斷,如果Action沒有該接口,就查找內部的URL和權限的對照表來判斷。

           

          這個情況比較復雜,因為是要對Action進行調用,所以要看使用的web框架來定奪。是用不同Web框架要是用不同的Web框架攔截器。所以恐怕acegi力不從心,挺多在filter里面配置一下是否要是用Action自身校驗。但是想法很好,贊。

           

          引用

          你怎么把信息有效的傳遞給Web層和其他的Facade層進行用戶友好性的提示處理?

           

          acegi校驗失敗的時候會拋出AuthenticationException異常,然后放在session里面,
          在錯誤轉向頁面可以這樣是用

          代碼
          <%= ((AuthenticationException) session.getAttribute(AbstractProcessingFilter.ACEGI_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>    
          <%= session.getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY) %>    
          <%= session.getAttribute(SecurityEnforcementFilter.ACEGI_SECURITY_ACCESS_DENIED_EXCEPTION_KEY) %> 

          不過這么用實在太難看了,暈了。可以自己用tag來搞定

           

           

          引用

          很多系統需要根據權限不同,生成不同的UI組件(例如管理員的菜單和普通用戶菜單就肯定不一樣),這也需要在Web層的View進行控制。

          acegi對View的處理就是使用tag,原來的acegi好像沒有什么tag,簡直是爛,現在有了tag,說一下是用的方法,但是說實話他的tag實在是不夠強。

           

          老版的web.xml

          代碼
          1<taglib>   
          2  <taglib-uri>http://acegisecurity.sf.net/authz</taglib-uri>   
          3  <taglib-location>/WEB-INF/authz.tld</taglib-location>   
          4</taglib>  

          在頁面中使用
          代碼
          1<authz:authorize ifAllGranted="ROLE_SUPERVISOR">   
          2<td>   
          3<HREF="del.htm?id=<c:out value="/${contact.id}"/>">Del</A>   
          4</td>   
          5</authz:authorize>  

          ifAllGranted是說所有的權限都有,用','分割權限
          可以替換成ifAnyGranted: ifNotGranted:

           

           

          代碼
          1<authz:authentication operation="username"/>   

           

          這個是用來顯示你的權限信息的。

           

          代碼
          1<authz:acl domainObject="${contact}" hasPermission="16,1">   
          2<td><HREF="<c:url value="del.htm"><c:param name="contactId"   
          3value="${contact.id}"/></c:url>">Del</A></td>   
          4</authz:acl>  

          posted on 2007-05-20 12:42 LiuTing 閱讀(498) 評論(0)  編輯  收藏 所屬分類: 身份認證管理


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 含山县| 鄂伦春自治旗| 东光县| 扎鲁特旗| 宜昌市| 恩平市| 乌拉特中旗| 湘西| 固始县| 永济市| 团风县| 武山县| 上饶市| 茂名市| 山阳县| 华亭县| 女性| 台北市| 沁水县| 东乡| 武强县| 荃湾区| 松潘县| 濮阳县| 灵丘县| 汉中市| 郁南县| 依兰县| 四子王旗| 榆社县| 台江县| 天镇县| 阳春市| 涿鹿县| 金平| 金溪县| 德阳市| 和田市| 德清县| 滕州市| 苍溪县|