在验证用户登录的时候,各个类调用的顺序如下所示:
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()方法,这个时候就会到数据库中取数据了,取到以后,再把数据放到缓存中。
分享到:
相关推荐
Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解
acegi配置,让你更好的合理的了解acegi是什么
Acegi学习笔记(JAVA系统安全编程时用到),我就用到了Acegi,真的太牛了。
acegi学习笔记 要10个字 晕
资源名称:敏捷Acegi、CAS.构建安全的Java系统资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
里边包括了 Acegi安全系统介绍.doc、Acegi使用.pdf、acegi学习笔记.doc、实战acegi.pdf、以及自己整理的 acegi的认证过滤器.rar
最近因为公司的需要,用acegi进行权限控制,简单总结了一下,和大家分享
敏捷Acegi、CAS++构建安全的Java系统pdf——part5
acegi学习整理合集 很全 工作中搜集整理的
ACEGI ACEGI学习指南 ACEGI例子,标准的组合,例子可以正常运行
前段时间复习了spring怎么做权限的技术,spring acegi 学习心得.记下来勉励自己.
acegi,acegi,acegi
一个使用Acegi身份认证框架的笔记 可以节省你的时间 方便快速学会使用
1、一个Acegi的例子,可以运行 2、一个很好的学Acegi的网址,0基础学习Acegi,强烈推荐 3、有什么问题可以发邮件heroshen@126.com讨论
敏捷Acegi、CAS++构建安全的Java系统pdf——part4
Acegi文档 spring acegi 详细文档
敏捷Acegi、CAS++构建安全的Java系统pdf资源
敏捷Acegi、CAS++构建安全的Java系统pdf——part3
不错的ACEGI 教程