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容器