<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂奔 lion

    自強不息

    Spring Security 2 中動態角色權限的實現

     

    安全框架的主體包括兩部分即驗權和授權。Spring Security2可以很好的實現這兩個過程。Spring Security2對其前身acegi最大的改進是提供了自定義的配置標簽,通過Security的命名空間定義了httpauthentication-provider等標簽,這樣做的好處是極大地簡化了框架的配置,并很好地隱藏了框架實現的細節,在配置的表述上也更清晰,總體上提高了框架的易用性。

    然而,該框架默認的權限配置方式在xml中,又因為新版本隱藏了實現細節,在動態權限的擴展上,能力變小了。在驗權過程中,遇到的問題不多。但在授權時,如果是acegi,人們可以通過繼承AbstractFilterInvocationDefinitionSource類實現在授權(即資源角色和用戶角色的匹配)前,針對資源的角色的獲取。而新版本因為用新標簽進行了整合,這個過程被默認的類實現隱藏掉了,包括過濾器,資源獲取和角色定義等過程都由框架來實現,于是很多人在使用Spring Security2時也想通過改動DefaultFilterInvocationDefinitionSource對資源的獲取來實現數據庫或文件中的動態的角色。不過這樣的改動侵入性比較高,而且還保留了acegi的痕跡,也違背了開閉的原則。

    其實,我們完全可以通過Spring Security2 accessManager提供的自定義投票機制來解決這個問題,這樣既不影響現有的基于URL的配置,還可以加入自己的動態的權限配置。

             其實現策略如下:

    1 定義類DynamicRoleVoter實現AccessDecisionVoter,注入實現接口DynamicRoleProvider(用來定義獲取角色的方法)的提供動態角色的類

    2 在兩個supports方法中返回true

    3 vote方法中,有三個參數(Authentication authentication, Object object,

    ConfigAttributeDefinition config) 通過第一個獲取用戶的權限集合,第二個可以獲取到資源對象,進而通過DynamicRoleProvider獲取到角色集合進行匹配。

    4 在配置文件中加入DynamicRoleVoter,如下:

    <beans:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased">
    <beans:property name="decisionVoters">
    <beans:list>
    <beans:bean class="org.springframework.security.vote.RoleVoter" />
    <beans:bean class="org.springframework.security.vote.AuthenticatedVoter" />
    <beans:bean class="DynamicRoleVoter">
        
    <beans:property name="dynamicRoleProvider">
            
    <beans:ref local="dynamicRoleProvider"/>
    </beans:property>
    </beans:bean>
    </beans:list>
    </beans:property>
    </beans:bean>
    <beans:bean id=” dynamicRoleProvider” class=”…”>
        
    ……
    </beans:bean
    >


     @2008 楊一. 版權所有. 保留所有權利

    posted on 2009-03-04 12:55 楊一 閱讀(5075) 評論(0)  編輯  收藏 所屬分類: HLD

    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    公告

    本人在blogjava上發表的文章及隨筆除特別聲明外均為原創或翻譯,作品受知識產權法保護并被授權遵從 知識分享協議:署名-非商業性使用-相同方式共享 歡迎轉載,請在轉載時注明作者姓名(楊一)及出處(m.tkk7.com/yangyi)
    /////////////////////////////////////////
    我的訪問者

    常用鏈接

    留言簿(5)

    隨筆分類(55)

    隨筆檔案(55)

    相冊

    Java

    其他技術

    生活

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    自強不息


    用心 - 珍惜時間,勇于創造
    主站蜘蛛池模板: 最新亚洲成av人免费看| 亚洲av高清在线观看一区二区 | 婷婷国产偷v国产偷v亚洲| 免费无码又爽又刺激聊天APP| 亚洲精品在线视频观看| 精品免费人成视频app| 亚洲精品免费在线视频| 久久经典免费视频| 亚洲精品天堂成人片AV在线播放| 欧美男同gv免费网站观看| 亚洲欧洲国产综合AV无码久久 | 国产黄在线观看免费观看不卡| 四虎永久免费影院| 黄色一级毛片免费| 亚洲色偷偷狠狠综合网| 中文字幕免费在线播放| 亚洲AV无码欧洲AV无码网站| 91精品免费高清在线| ww亚洲ww在线观看国产| 日韩电影免费在线| 一级毛片免费播放试看60分钟| 亚洲乱色熟女一区二区三区丝袜| 久久九九全国免费| 中文日韩亚洲欧美制服| 亚洲 自拍 另类小说综合图区| 中文字幕高清免费不卡视频| 亚洲avav天堂av在线不卡| 波多野结衣在线免费视频| 亚洲AV无码男人的天堂 | 亚洲性无码av在线| 国产精品冒白浆免费视频| aa在线免费观看| 亚洲精品**中文毛片| 四只虎免费永久观看| 精品国产一区二区三区免费| 亚洲1234区乱码| 久久久久亚洲AV成人网人人软件| 无码成A毛片免费| 噜噜噜亚洲色成人网站| 亚洲欧洲日产国码久在线观看| 男人的好看免费观看在线视频|