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

          acegi學習筆記——1

          Posted on 2006-09-18 15:04 小小涼粉 閱讀(281) 評論(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()方法,這個時候就會到數據庫中取數據了,取到以后,再把數據放到緩存中。

          主站蜘蛛池模板: 兴城市| 开封市| 晋中市| 望都县| 朔州市| 曲靖市| 法库县| 东方市| 金阳县| 高陵县| 兴仁县| 兴义市| 政和县| 方正县| 运城市| 乌什县| 尖扎县| 岚皋县| 石河子市| 绵竹市| 甘南县| 新竹县| 武义县| 沙雅县| 扶余县| 水富县| 岢岚县| 武山县| 鱼台县| 晋宁县| 略阳县| 阿拉善右旗| 库伦旗| 庆元县| 青州市| 邢台市| 福海县| 贵港市| 江陵县| 邵武市| 历史|