如果权限不足,不能访问某个方法或者页面,会报403错误。
不同方式,方法/页面
-
在spring-secrity.xml中直接配置
<security:intercept-url pattern="/user/**" access="ROLE_ADMIN,ROLE_admin"/><security:intercept-url pattern="/role/**" access="ROLE_ADMIN,ROLE_admin"/>
<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_use,ROLE_ADMIN,ROLE_admin"/>
security:intercept-url是从上往下继续执行,如果上边的pattern通过,下面更精细的pattern不会执行
比如:如果是
<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_use,ROLE_ADMIN,ROLE_admin"/>
<security:intercept-url pattern="/role/**" access="ROLE_ADMIN,ROLE_admin"/>
下面第二条"/role/**"的限制,就完全没有作用,非admin角色也可以访问该方法
-
JSR-250
- 在spring-security开启开启JSR-250
<!--在spring-security.xml中开启jsr250注解,security -->
<security:global-method-security jsr250-annotations="enabled"/>
2.注解,加在方法名上
- @RolesAllowed表示访问对应方法时所应该具有的角色
@RolesAllowed({"USER", "ADMIN"}) 该方法只要具有"USER", "ADMIN"任意一种权限就可以访问。这里可以省
略前缀ROLE_,实际的权限可能是ROLE_ADMIN
- @PermitAll表示允许所有的角色进行访问,也就是说不进行权限控制
- @DenyAll是和PermitAll相反的,表示无论什么角色都不能访问
//只允许有"ROLE_USER",或者"ROLE_user" 的角色访问
@RolesAllowed({"USER","user"})
@RequestMapping("/findAll")
ModelAndView findAll(){
//方法体...
}
-
Secured注解