2006-09-18
acegi学习笔记——1
在验证用户登录的时候,各个类调用的顺序如下所示:
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()方法,这个时候就会到数据库中取数据了,取到以后,再把数据放到缓存中。
发表评论
我的相册
sina
共 3 张
共 3 张
最近加入圈子
链接
最新评论
-
羡慕,那你也加入啊
和我的拒信一模一样。哎
-- by niwtsew -
web环境下开发quartz简易 ...
你写的很好。我的是在rcp下面是用quartz还得自己摸索..........
-- by futionbai -
Starting Struts2中文版已 ...
呵呵,希望大家可以喜欢
-- by dearwolf -
Starting Struts2中文版已 ...
正在看这本书!! 哈哈
-- by kanokano -
CSDN英雄大会上,跟苏某翻 ...
我只想到。。。这么年轻就有仔了,好可怜阿。。。。
-- by akane







评论排行榜