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

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

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

    狂奔 lion

    自強(qiáng)不息

    Spring Security 2 中動態(tài)角色權(quán)限的實(shí)現(xiàn)

     

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

    然而,該框架默認(rèn)的權(quán)限配置方式在xml中,又因?yàn)樾掳姹倦[藏了實(shí)現(xiàn)細(xì)節(jié),在動態(tài)權(quán)限的擴(kuò)展上,能力變小了。在驗(yàn)權(quán)過程中,遇到的問題不多。但在授權(quán)時,如果是acegi,人們可以通過繼承AbstractFilterInvocationDefinitionSource類實(shí)現(xiàn)在授權(quán)(即資源角色和用戶角色的匹配)前,針對資源的角色的獲取。而新版本因?yàn)橛眯聵?biāo)簽進(jìn)行了整合,這個過程被默認(rèn)的類實(shí)現(xiàn)隱藏掉了,包括過濾器,資源獲取和角色定義等過程都由框架來實(shí)現(xiàn),于是很多人在使用Spring Security2時也想通過改動DefaultFilterInvocationDefinitionSource對資源的獲取來實(shí)現(xiàn)數(shù)據(jù)庫或文件中的動態(tài)的角色。不過這樣的改動侵入性比較高,而且還保留了acegi的痕跡,也違背了開閉的原則。

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

             其實(shí)現(xiàn)策略如下:

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

    2 在兩個supports方法中返回true

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

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

    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 楊一. 版權(quán)所有. 保留所有權(quán)利

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

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

    導(dǎo)航

    公告

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

    常用鏈接

    留言簿(5)

    隨筆分類(55)

    隨筆檔案(55)

    相冊

    Java

    其他技術(shù)

    生活

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    自強(qiáng)不息


    用心 - 珍惜時間,勇于創(chuàng)造
    主站蜘蛛池模板: 久久久久国产精品免费免费搜索 | 亚洲一区二区免费视频| 亚洲一区二区精品视频| 免费电影在线观看网站| 在线观看免费中文视频| 国产日韩久久免费影院| 国产AV日韩A∨亚洲AV电影| 456亚洲人成影院在线观| 亚洲视频一区网站| 国产AV无码专区亚洲A∨毛片| 一本久到久久亚洲综合| 噜噜嘿在线视频免费观看| 国产大片免费网站不卡美女| 免费播放在线日本感人片| 精品国产免费人成网站| 四虎影视久久久免费| mm1313亚洲国产精品无码试看 | 国产精品久久久久免费a∨| 久久国产精品免费专区| a级毛片免费在线观看| 国产免费AV片在线观看播放| 一个人免费播放在线视频看片| 窝窝影视午夜看片免费| 美女被免费网站在线视频免费 | 久久电影网午夜鲁丝片免费| 中文字幕免费在线看线人| 狼群影院在线观看免费观看直播| 99re6热视频精品免费观看| 免费一级毛片在线播放视频| 四虎影视久久久免费观看| 人妻仑乱A级毛片免费看| 一级毛片a免费播放王色电影| 曰批免费视频播放免费| 国产精品美女久久久免费 | 91在线视频免费播放| 中文字幕无码不卡免费视频| 无限动漫网在线观看免费| 猫咪社区免费资源在线观看| 皇色在线视频免费网站| 成人黄软件网18免费下载成人黄18免费视频 | 色屁屁在线观看视频免费|