spring security2【与数据库权限关联】
- 设计数据库
?????????????
???????????? 数据库实体图:
???????????
??????????
?
??????2、将用户权限表与springsecurity相关联
?
?????????????????????使用自定义的provider
???????????????????
?
??
?
?
自己定义的loginfilter,必须继承UsernamePasswordAuthenticationFilter
?import java.util.Collection;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;public class UserDetail implements UserDetails{private String password;private String username;private Collection<GrantedAuthority> grantedauthoritys;private boolean isEnabled; //账户是否有效 @Overridepublic Collection<GrantedAuthority> getAuthorities() {// TODO Auto-generated method stubreturn grantedauthoritys;}@Overridepublic String getPassword() {// TODO Auto-generated method stubreturn "a4a88c0872bf652bb9ed803ece5fd6e82354838a9bf59ab4babb1dab322154e1";}@Overridepublic String getUsername() {// TODO Auto-generated method stubreturn "admin";}@Overridepublic boolean isAccountNonExpired() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isAccountNonLocked() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isCredentialsNonExpired() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isEnabled() {// TODO Auto-generated method stubreturn true;}}
这里面可以自己从数据库中进行得到密码,赋予权限,并且自定义权限字符串,然后每次登陆时就会把权限与配置文件中进行比较?
暂时发现的缺点是不能进行动态的配置权限,但是可以自己进行补充,扩展,这点等分析详细后在补充,思路是找到权限验证的类,把用户输入的URL权限与当前用户的浏览申请的URL进行比对,为了考虑运行速度的问题,还必须要把所有的浏览权限保存在内存中,否则每次都会从数据库中进行查询,减低了效率
大家都想自定义实现权限验证,这种方法告诉大家了
好了,如果有问题,请留言,由于分析难度比较大,只能慢慢来了