Shiro手动完成简单用户授权

Bertha 。 2022-05-13 18:39 280阅读 0赞

完整项目代码:https://download.csdn.net/download/zeal9s/10744751

1.新建Maven项目Shiro_02,并设置项目输出文件显示

2.访问apache官网下载地址搜索到shiro,下载shiro的core、web、整合spring的依赖并且导入到项目中的pom.xml
在这里插入图片描述pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>Shiro_02</groupId>
  4. <artifactId>Shiro_02</artifactId>
  5. <packaging>war</packaging>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>Shiro_02 Maven Webapp</name>
  8. <url>http://maven.apache.org</url>
  9. <dependencies>
  10. <dependency>
  11. <groupId>junit</groupId>
  12. <artifactId>junit</artifactId>
  13. <version>4.12</version>
  14. <scope>test</scope>
  15. </dependency>
  16. <!--引入servlet依赖:解决jsp页面报错 -->
  17. <dependency>
  18. <groupId>javax.servlet</groupId>
  19. <artifactId>javax.servlet-api</artifactId>
  20. <version>4.0.0-b07</version>
  21. <scope>provided</scope>
  22. </dependency>
  23. <!--引入shiro的核心依赖 -->
  24. <dependency>
  25. <groupId>org.apache.shiro</groupId>
  26. <artifactId>shiro-core</artifactId>
  27. <version>1.3.2</version>
  28. </dependency>
  29. <!--引入shiro的web依赖 -->
  30. <dependency>
  31. <groupId>org.apache.shiro</groupId>
  32. <artifactId>shiro-web</artifactId>
  33. <version>1.3.2</version>
  34. </dependency>
  35. <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
  36. <dependency>
  37. <groupId>commons-logging</groupId>
  38. <artifactId>commons-logging</artifactId>
  39. <version>1.2</version>
  40. </dependency>
  41. </dependencies>
  42. <build>
  43. <finalName>Shiro_02</finalName>
  44. </build>
  45. </project>

3.项目的模块图
在这里插入图片描述

4.新建shiro.ini认证文件

  1. #手动配置用户、角色和权限
  2. [users]
  3. admin=123,father
  4. sa=456,son
  5. [roles]
  6. father=add,delete,update,query
  7. son=add

5.在src/test/java目录下新建com.zs.test包,在包下新建TestShiro.java
TestShiro.java

  1. package com.zs.test;
  2. import org.apache.shiro.SecurityUtils;
  3. import org.apache.shiro.authc.UsernamePasswordToken;
  4. import org.apache.shiro.config.IniSecurityManagerFactory;
  5. import org.apache.shiro.mgt.SecurityManager;
  6. import org.apache.shiro.subject.Subject;
  7. import org.apache.shiro.util.Factory;
  8. /** * * @ClassName: TestShiro * @Description:手动写用户配置文件shiro.ini完成授权过程 * @author 小思 * @date 2018年10月25日 下午4:14:21 * */
  9. public class TestShiro {
  10. public static void main(String[] args) {
  11. // 认证过程之后的使用
  12. // 创建shiro的认证工厂,指定认证的文件
  13. Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
  14. // 通过认证工厂,获取认证管理者
  15. SecurityManager securityManager = factory.getInstance();
  16. // 将安全管理者添加到当前的安全管理环境中
  17. SecurityUtils.setSecurityManager(securityManager);
  18. // 获取安全管理的项目
  19. Subject subject = SecurityUtils.getSubject();
  20. // 用户输入的用户名和密码
  21. String uname = "admin";
  22. String pwd = "123";
  23. // 创建保存用户的用户名和密码的令牌
  24. UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(uname, pwd);
  25. try {
  26. // 登录认证
  27. subject.login(usernamePasswordToken);
  28. // 认证结果
  29. boolean result = subject.isAuthenticated();
  30. System.out.println("认证结果" + result);
  31. } catch (Exception e) {
  32. }
  33. // 授权过程之后的使用
  34. // 判断用户是否具有某个角色
  35. boolean role = subject.hasRole("father");
  36. System.out.println("用户具有father角色吗?" + role);
  37. // 角色是否拥有某个权限
  38. boolean behave=subject.isPermitted("update");
  39. System.out.println("father具有update权限吗?" + behave);
  40. // 角色是否拥有某个权限
  41. boolean behaves=subject.isPermittedAll("update","query");
  42. System.out.println("father具有update、query权限吗?" + behaves);
  43. }
  44. }

6.运行结果

(1)认证成功:配置文件中的用户名和通过数据库查询的密码和用户在页面输入的用户名和密码一致

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)认证失败:配置文件中的用户名和通过数据库查询的密码和用户在页面输入的用户名和密码不一致

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Shiro---授权

    什么是授权? shiro是一款安全框架,开发中经常使用Shiro来进行认证和授权,所谓授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的

    相关 Shiro--授权

    授权 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource