Spring Security的使用(访问权限控制)
2018-10-24 11:12
246 查看
访问权限控制
粗粒度:对一个功能的访问进行控制 细粒度:对该功能下的数据显示进行控制 注意:权限控制,需要在spring-mvc.xml中配置,否则会导致失效 <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy> <!---------------------------------方法/类权限控制-------------------------------------> jsr-250权限控制的使用: 第一步:导入依赖 <dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <version>1.0</version> </dependency> 第二步:编写spring-security.xml,开启jsr-250注解的使用 <security:global-method-security jsr250-annotations="enabled"/> 第三步:在需要权限控制的类或方法上使用@RolesAllowed("ADMIN"),来控制访问所需要的角色,可以省略"ROLE_",开启表达式的使用, @RolesAlloewd("ADMIN")依然这么写 secured权限控制的使用: 第一步:编写spring-security.xml,开启secured注解的使用 <security:global-mathod-security secured-annotations="enable"/> 第三步:在需要权限控制的类或方法上使用@Secured("ROLE_ADMIN"),来控制访问所需要的角色,不能省略"ROLE_", 开启表达式的使用, @Secured("ROLE_ADMIN")依然这么写 SPEL表达式权限控制的使用: 在spring-security.xml中开启使用SPEL表达式, <security:http auto-config="true" use-expressions="true"></security:http> 开启SPEL表达式后,需要修改: <security:intercept pattern="/**" access="hasRole('ROLE_ADMIN','ROLE_USER')"> <security:global-method-security pre-post-annotations="enabled"></security:global-method-security> @PreAuthorize("authentication.principal.username == 'tom'") //当前用户为tom才可以访问 @PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_USER')") //admin或者user角色都可以访问 @PreAuthorize("hasRole('ROLE_ADMIN')") //admin角色可以访问 <!---------------------------------页面权限控制-------------------------------------> 第一步:导入依赖 <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>5.0.1.RELEASE</version> </dependency> 第二步:在JSP页面引入标签库 <%@taglib prefix="security" uri="http://www.springframework.org/security/tags" %> 1.获取当前认证用户的信息 <h1>用户名:<security:authentication property="principal.username"/></h1> 2.控制菜单栏是否显示 <security:authorize access="hasRole('ROLE_ADMIN')"> ....(菜单栏) </security:authorize>
@Param注解
由于#{}中赋值时,如果需要赋值的数据类型是普通数据类型,那么#{}可以任意写 @Insert("insert into user values(#{username},#{password})") public void save(@Param("username"))String username,@Param("password")String password){ ... } 此时,由于赋值不明确,会导致500,可以使用@Param注解解决参数注入问题
手动指定错误状态码的跳转页面
配置wem.xml <error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page> 400:通常发生在spring自动封装前端数据异常,一般都是日期转换异常 403:通常是在使用了spring security框架后,发生的权限不足的问题阅读更多
相关文章推荐
- 在Spring Boot中使用Spring Security实现权限控制
- 在Spring Boot中使用Spring Security实现权限控制
- 如何使用命令行更改文件以及文件夹的访问控制权限,从而达到最高权限控制文件的目的
- 在Spring Boot中使用Spring Security实现权限控制
- 在Spring Boot中使用Spring Security实现权限控制
- 使用nginx作图片服务器的访问权限控制
- 防止用户直接访问url的权限控制(使用过滤器)
- 使用流程引擎控制访问权限的可行性研究
- 在Spring Boot中使用Spring Security实现权限控制
- spring security 采用角色控制访问权限
- 使用 Nginx 的 X-Sendfile 机制控制文件访问权限(php版)
- 使用Spring Security、Spring Data Jpa实现的RBAC权限控制
- 开始VS 2012中LightSwitch系列的第5部分:我可以使用用户权限来控制访问权吗?
- spring security 采用角色控制访问权限
- spring security 采用角色控制访问权限
- 使用nginx和iptables做访问权限控制(IP和MAC)
- 使用Filter控制url访问权限
- SpringBoot中使用Spring Security实现权限控制
- spring security 采用角色控制访问权限
- 在Spring Boot中使用Spring Security实现权限控制