在使用spirngsecurity的时候相信大家都遇到过,只有几个界面用户能访问然后把特定的几个界面放行给所有用户
spirngsecurity是支持这样做的,那么按照顺序来
()
.antMatchers("/*").hasRole("user")
.antMatchers("/").permitAll()
这个时候发现任何请求根目录403了,这是为什么呢?
其实我们在这么做的时候必须把第一行得代码,也就是拦截所有请求放到最后边,不然在它之后的开放权限(permitAll())并没有生效,正确顺序
()
.antMatchers("/").permitAll()
.antMatchers("/*").hasRole("user")
这就结束了吗?并没有,我访问了/login和/regist 确实被拦截了,因为没有权限,但是这时候我访问了show/2(restful风格传参),却能进去
这是因为 /* 只代表 /请求 但是不代表 /请求/子请求 所以正确操作是改成/**
()
.antMatchers("/").permitAll()
.antMatchers("/**").hasRole("user")
同理如果我想放行/show请求,因为我restful风格传参,所以应该放行 /show/*
别忘了放行静态资源