SSM集成SpringSecurity(五)user-service配置实现用户权限访问控制

释放双眼,带上耳机,听听看~!

SpringSecurity的主要功能是认证和授权,前面我们分别讲了基于httpBasic和formLogin的登录认证。本节开始,我们讲解SpringSecurity的授权。

授权:授予用户一定的权限。

基于前面章节的代码,我们假设有这样一个需求:现在有两个用户,xhc1和xhc2,xhc1持有商品显示和添加的权限,xhc2持有商品修改和删除的权限。那我们来实现吧。

1: 修改spring-security.xml文件,添加用户信息

security:authentication-provider

security:user-service

<security:user name="xhc1" password="123456" authorities="ROLE_USER"/>

<security:user name="xhc2" password="123456" authorities="ROLE_ADMIN"/>

</security:user-service>

</security:authentication-provider>

</security:authentication-manager>

2: 在intercept-url pattern="/userLogin"后面新增拦截的地址

<security:intercept-url pattern="/userLogin" access="permitAll()"/>

 

<security:intercept-url pattern="/goods/add" access="hasRole('ROLE_USER')"/>

<security:intercept-url pattern="/goods/list" access="hasRole('ROLE_USER')"/>

<security:intercept-url pattern="/goods/delete" access="hasRole('ROLE_ADMIN')"/>

<security:intercept-url pattern="/goods/update" access="hasRole('ROLE_ADMIN')"/>

access中的hasRole方法就是判断是否匹配参数中的的角色。注意:角色一定是以ROLE_开头,这是springSecurity要求的。

3: 自定义权限不足的页面。由于权限不足会报出403,所以需要自定义权限不足的页面。

在jsp目录下新增一个error.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
<title>错误页面</title>
</head>
<body>

您没有权限访问

</body>
</html>

在MainController中添加

@RequestMapping("/error")

public String error() {

return "error";

}

配置文件中新增access-denied-handler

<security:csrf disabled="true"/>

<!– 权限不足 –>

<security:access-denied-handler error-page="/error"/>

启动项目,分别使用xhc1和xhc2进行登录,如果权限不足,会跳转到error.jsp页面进行展示。

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全技术

[易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索