好好编程-物流项目14【授权管理-shiro实现】

网友投稿 625 2022-05-30

上篇文章实现类基于Shiro的认证操作,本文来实现下授权操作。

授权

Shiro授权原理及细节内容欢迎参考如下链接

https://dpb-bobokaoya-sm.blog.csdn.net/article/details/86652418

1.获取用户对应的权限

本项目中我们的权限就只涉及到角色,没有再细粒度到菜单,感兴趣的可以自己可扩展实现下。

IUserService方法

/** * 根据用户编号获取对应的权限信息 * @param userId * @return */ public List queryRoleByUserId(int userId);

1

2

3

4

5

6

7

UserServiceImpl实现

@Override public List queryRoleByUserId(int userId) { return roleMapper.queryRoleByUserId(userId); }

1

2

3

4

5

RoleMapper接口中定义方法

List queryRoleByUserId(int userId);

1

RoleMapper映射文件中添加sql

1

2

3

4

5

6

7

2.授权方法

修改MyRealm中授权的方法

/** * 授权的方法 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // 获取认证的信息 User user = (User) principals.getPrimaryPrincipal(); // 获取登录用户对应的权限 List roles = userService.queryRoleByUserId(user.getUserId()); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); for (Role role : roles) { // 将用户具有的角色保存到SimpleAuthorizationInfo对象中 info.addRole(role.getRoleName()); } return info; }

1

2

3

4

5

6

7

好好编程-物流项目14【授权管理-shiro实现】

8

9

10

11

12

13

14

15

16

3.SpringMVC添加配置

1

2

3

4

5

6

4.数据准备

创建一个账号分配对应的角色用来测试。

5.限制权限

// 当前登录用户需要"管理员角色才能访问" @RequiresRoles("管理员") @RequestMapping("/queryPage") public String queryPage(UserDto dto,Model model){ PageInfo pageModel = userService.queryPage(dto); model.addAttribute("pageModel", pageModel); return "user/user"; }

1

2

3

4

5

6

7

8

用没有"管理员"角色的访问测试

用具有访问权限的账号登录

有权的访问成功。

解决没有访问权限的跳转问题。

新建一个没有权限的跳转页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 无标题文档

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

SpringMVC中配置

redirect:/failed redirect:/login.jsp

1

2

3

4

5

6

7

8

9

10

11

12

13

用没有权限的账号测试

权限标签在具体的业务场景中使用~

智慧物流

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vue 插槽详解
下一篇:PHP服务器端API原理及示例讲解(接口开发)
相关文章