授权
放行
之前写道过的http.authorizeRequests()就是授权的
前后端不分离的情况下:
有些页面需要放行,否则会被拦截,例如:登录页面login.html
.antMatchers("/login.html").permitAll();
在很多项目中经常需要放行所有的静态资源
.antMatchers("/js/**","/css/**").permitAll();
还有一种放行是根据后缀名
.antMatchers("/**/*.css").permitAll();
规则如下:
-
? :匹配一个字符
-
*:匹配0个或多个字符
-
**:匹配0个或多个目录
regexMatchers也可以放行,他与antMatchers的区别在于前者使用的是正则表达式进行放行的,对我而言更喜欢后者
例如: 放行以jpg为后缀名的图片
.regexMatchers(".+[.]jpg").permitAll();
也有HTTP请求方式参数形式
.regexMatchers(HttpMethod.POST,".+[.]jpg").permitAll();
mvcMatchers用于加前缀
可以配置yml给所有路径加前缀
spring:
mvc:
servlet:
path: /xxxx
也可以用mvcMatchers
.mvcMatchers("/image/**").servletPath("/****").permitAll();
权限判断
添加权限有三种方式
-
http添加权限
-
注解添加权限
-
动态权限
这次学习的是自己添加权限
hasAuthority: 增加一个权限
hasAnyAuthority: 增加一个或多个权限
不管是hasAuthority还是hasAnyAuthority都可以给页面或者方法添加权限,给页面添加权限即跳转之前先判断是否有权限。好比如有钥匙就能开门,钥匙不匹配开不了门
http.authorizeRequests()
.antMatchers("/home.html").hasAuthority("admin")
.antMatchers("/home").hasAnyAuthority("admin","home");
角色判断
数据库有角色的的权限编码