posts - 28, comments - 27, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          acegi學習筆記——1

          Posted on 2006-09-18 15:04 小小涼粉 閱讀(284) 評論(0)  編輯  收藏 所屬分類: JavaEE

          在驗證用戶登錄的時候,各個類調用的順序如下所示:

          authenticationProcessionFilter(AuthenticationProcessingFilter)---->

          authenticationManager(ProviderManger)---->

          daoAuthenticationProvider(DaoAuthenticationProvider)---->

          userDetailsService(UserDetailsService)

          在最底層的UserDetailsService接口中,提供了loadUserByUsername這個方法,我們只需要實現這個接口,并實現接口中的方法,就可以使用自己的驗證功能了。該方法傳入的參數是String username,返回類型是UserDetails,很顯然,我們需要通過自己的dao,根據username來得到自定義的user類型,然后把它封裝到UserDetails里面去,然后返回。

          另外,在UserDetail這個類里面,有一個GrantedAuthority[] 類型的屬性,用來存放該用戶所對應的權限,我們在loadUserByUsername這個方法里面,同樣也需要得到該用戶的權限,并把它賦給返回的UserDetails。

          假如用戶對應的類名為UserInfo,權限對應的類名為Roles,在UserInfo中有一個變量

          private Set roles;

          在得到權限信息的時候,因為它是集合,所以可以使用延遲加載功能,讀取的時候先從緩存中取數據,如果取不到的話,就調用UserInfo.getRoles()方法,這個時候就會到數據庫中取數據了,取到以后,再把數據放到緩存中。

          主站蜘蛛池模板: 申扎县| 邻水| 西峡县| 侯马市| 鹤庆县| 太仓市| 襄城县| 新疆| 南安市| 大姚县| 卓尼县| 容城县| 奇台县| 陈巴尔虎旗| 新干县| 石狮市| 体育| 资中县| 汶川县| 望奎县| 游戏| 尼玛县| 济南市| 景宁| 隆安县| 修武县| 长治市| 巫山县| 呼和浩特市| 保山市| 锦州市| 北海市| 本溪市| 余干县| 安仁县| 新郑市| 万源市| 临沧市| 绥江县| 富平县| 甘洛县|