Java——SpringSecurity

git将本地项目远程到远程仓库后发现文件夹打不开,往往是因为文件夹里内含仓库;处理办法:

将文件夹内的.git隐藏文件删掉,后运行git rm -r --cache 文件夹名;之后再进行add、commit操作,最后再git push origin master;

 

SpringSecurity的认证最后是在UserDetailsService这个接口中实现的,里面包含了这样一个方法:

UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

 

 而SpringSecurity自身缓存的用户对象是在UserDetails中,如果我们要连接自己的数据库,需要继承这个UserDetailsService这个接口;

这个方法的参数传入用户名,我们可以根据用户名

查询到数据库的用户对象,然后加载到UserDetails中:

 

 

 

对于csrf的理解,为了防止内存用户被别的同网页网站盗取;原理是在我们提出post、delete、等操作性请求时,会同时携带一个由springsecurity内部生成的token进行认证;因此我们在表单或者别的jsp页面中需要加入:,用来传送token认证;

 

 

 

 

remember me功能:

原理是将其内容存在cookie中;

页面部分:

 

 过滤器部分(开启):

 

 为了安全性,最好将remember me内容持久化到数据库中比较好:

 

 

权限分配:

 

而这个分配只是在浏览器页面上分配,看不到不意味着不能访问,如果要达到真正的权限分配:

首先:

 

 然后在controller层或业务实现impl层进行注解限定:如:

 

 需要值得注意的是如果用的是SSM框架,那么上面的开放注解配置要写在对应的容器中,我们的ssm框架里的容器可看为ServictContext包裹着springioc容器再包裹着spring的前端控制器,而controller层处于的就是前端控制器这个容器,但是我们的spring-security.xml文件是被springIoc所加载,也就是加载注解配置的容器和开启配置的容器不是同一个,会导致注解不生效,所以如果要注释在controller层的话应该将注解开启配置配置在spring-mvc.xml文件中,如果在service层或dao层开启注解即放在spring-security.xml文件中即可,因为这层所处于的容器也是springIoc容器

 

posted @ 2020-07-29 09:16  xiao兆  阅读(166)  评论(0编辑  收藏  举报