1.总结:昨天主要是对WebSecurityConfigurerAdaptor的三个函数的区分以及了解了spring security的认证和授权流程;再就是动手使用了下thymeleaf和freeMark的模板以及使用JSON和fastJSON进行了JSON序列化显示图书信息
- WebSecurityConfigurerAdaptor的AuthenticationManagerBuilder主要是配置全局认证信息即AuthenticationManager(一般都是 通过DaoAuthenticationManagerProvider来实现)认证服务提供者和UserDetailsService来查询用户信息
- WebSecurity主要是全局请求忽略配置
- HttpSecurity主要是具体权限控制配置即授权哪些人访问哪些页面
- spring security的认证流程:首先是AbstractAuthenticationProcessingFilter过滤器将用户账号和密码封装成一个Authentication实现类UsernamePasswordAuthenticationToken;再通过AuthenticationManager的实现类DaoAuthenticationManagerProvider来验证验证用户信息是否有效;如果验证成功AuthenticationManager会议返回一个Authentication的Object里面包含用户的身份、权限、细节信息,但不包含密码;最后通过SecurityContextHolder.getContext().getProcipal()将object存到Security context中
- spring security授权流程:基于角色的访问控制:RBAC;根据用户查询用户所拥有的权限信息,再根据用户的权限信息查询用户拥有的url集合,最后判断用户要访问的url是否在这个url集合中,如果在就可以访问;
- SecurityMetadataSource通过getAttributes方法从数据库或者其他数据源信息获取ConfigAttributes中存取的url;再通过AccessDecisionManager的decide方法投票决定是否授权访问