shiro学习笔记(1)--基础定义

本是古典 何须时尚 2022-05-13 06:40 304阅读 0赞

一:shiro基础
(学习地址:https://www.w3cschool.cn/shiro/andc1if0.html)
1、核心概念
这里写图片描述
Authentication:认证
Authorization:授权
SessionManageMent:session管理
Cryptography:加密

2、shiro核心是SecurityManager
这里写图片描述
用户在shiro中表示为主题(subject),通过SecurityManager获取,同时SecurityManager通过域Realm获取数据库中用户校验信息进行校验。特别说明:shiro只负责接收信息并操作,不负责维护数据,用户信息需要自己维护,通过接口传给shiro。
详细流程图:
这里写图片描述
二:默认的IniRealm
1、jar包

  1. <!-- shiro jar -->
  2. <dependency>
  3. <groupId>org.apache.shiro</groupId>
  4. <artifactId>shiro-core</artifactId>
  5. <version>1.3.2</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
  8. <dependency>
  9. <groupId>commons-logging</groupId>
  10. <artifactId>commons-logging</artifactId>
  11. <version>1.2</version>
  12. </dependency>
  13. <!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
  14. <dependency>
  15. <groupId>com.mchange</groupId>
  16. <artifactId>mchange-commons-java</artifactId>
  17. <version>0.2.15</version>
  18. </dependency>
  19. <!-- ehcache jar -->
  20. <dependency>
  21. <groupId>net.sf.ehcache</groupId>
  22. <artifactId>ehcache</artifactId>
  23. <version>2.10.2</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.shiro</groupId>
  27. <artifactId>shiro-spring</artifactId>
  28. <version>1.2.3</version>
  29. </dependency>

2、main方法

  1. public static void main(String[] args) {
  2. Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro4.ini");
  3. SecurityManager securityManager = factory.getInstance();
  4. SecurityUtils.setSecurityManager(securityManager);
  5. Subject subject = SecurityUtils.getSubject();
  6. UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq","123654");
  7. subject.login(usernamePasswordToken);
  8. if(subject.isAuthenticated()){
  9. System.out.println("认证成功");
  10. }else{
  11. System.out.println("认证失败");
  12. }
  13. }

3、ini配置文件

  1. #shiro简单配置实例
  2. #主配置
  3. [main]
  4. #用户信息配置
  5. [users]
  6. kexq=123654
  7. ke=123654

三、JdbcRealm的配置方法
1、main

  1. public static void main(String[] args) {
  2. Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro2.ini");
  3. SecurityManager securityManager = factory.getInstance();
  4. SecurityUtils.setSecurityManager(securityManager);
  5. Subject subject = SecurityUtils.getSubject();
  6. try {
  7. UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("kexq", "123456");
  8. subject.login(usernamePasswordToken);
  9. if (subject.isAuthenticated()) {
  10. System.out.println("认证成功");
  11. }
  12. }catch (Exception e){
  13. System.out.println("认证失败");
  14. e.printStackTrace();
  15. }
  16. }

2、ini配置
说明:

  1. #shiro jdbcRealm配置实例
  2. [main]
  3. #配置数据源
  4. dataSource=org.apache.commons.dbcp.BasicDataSource
  5. dataSource.driverClassName=com.mysql.jdbc.Driver
  6. dataSource.url=jdbc:mysql://127.0.0.1:3306/shiro
  7. dataSource.username=root
  8. dataSource.password=123456
  9. #配置realm $表示引用对象
  10. jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
  11. jdbcRealm.dataSource=$dataSource
  12. #配置securityManager
  13. securityManager.realm=$jdbcRealm

3、数据库表
这里写图片描述
4、说明:
(1)数据库表名和字段名必须按规范来(由jdbcRealm默认)
(2)ini配置文件规范:通过$表示引用对象
(3)附jdbcRealm部分源码
这里写图片描述

发表评论

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

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

相关阅读

    相关 XML学习笔记1 基础

    XML基础 XML(EXtensible Markup Language 可扩展标记语言)被设计用来传输和存储数据,其与HTML不同,后者主要用于显示数据。XML的标签没