zoukankan      html  css  js  c++  java
  • Shiro学习笔记(二)

    首先还是先搭建工程运行环境  依旧搭建的是Maven工程,如果不是Maven 也可以去网上找jar包然后导入

    (我使用Maven主要是找依赖配置文件就行,我自己导jar包的时候就是很容易报错)

    还是先上传一张工程目录图

    主要的文件就是这两个,一个是配置的,一个是用来进行测试的

    jdbc_realm.ini配置文件中的内容如下

    [main]
    jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
    dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
    dataSource.driverClass=com.mysql.jdbc.Driver
    dataSource.jdbcUrl=jdbc:mysql://localhost:3306/db_shiro
    dataSource.user=root
    dataSource.password=root
    jdbcRealm.dataSource=$dataSource
    securityManager.realms=$jdbcRealm

    TestJdbc_realm.java文件中的内容如下

    package com.zuoyan.shiro;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.IncorrectCredentialsException;
    import org.apache.shiro.authc.UnknownAccountException;
    import org.apache.shiro.authc.UsernamePasswordToken;
    import org.apache.shiro.config.IniSecurityManagerFactory;
    import org.apache.shiro.mgt.SecurityManager;
    import org.apache.shiro.subject.Subject;
    import org.apache.shiro.util.Factory;
    import org.junit.Test;
    
    
    public class TestJdbcRealm {
        
        @Test
        public void testJdbcRealm() {
             Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbc_realm.ini");
                SecurityManager securityManager= factory.getInstance();
                // 把 securityManager 的实例绑定到 SecurityUtils 上
                SecurityUtils.setSecurityManager(securityManager);
                // 得到当前执行的用户
                Subject currentUser = SecurityUtils.getSubject();
                // 自己创建一个令牌
                UsernamePasswordToken token = new UsernamePasswordToken("zuoyan123","zuoyan123");
                try {
                    // 开始由 Shiro 帮助我们完成身份认证的逻辑
                    currentUser.login(token);
                    System.out.println("登录成功!");
                } catch (UnknownAccountException e) {
                    e.printStackTrace();
                    System.out.println("用户名不存在!");
                }catch (IncorrectCredentialsException e){
                    e.printStackTrace();
                    System.out.println("密码错误!");
                }catch (AuthenticationException e){
                    e.printStackTrace();
                }
        }
    
    }

    还有就是数据库中的users表的内容

    当查找的用户名在数据库中不存在的情况下,运行的结果如下

    当用户名能和数据库对应上,而密码不对的话的情况如下

     用户名和密码都正确的情况下,

    对了,最后还有数据库创建的代码

    /*
    SQLyog Ultimate v11.33 (64 bit)
    MySQL - 5.1.49-community : Database - db_shiro
    *********************************************************************
    */
    
    
    /*!40101 SET NAMES utf8 */;
    
    /*!40101 SET SQL_MODE=''*/;
    
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_shiro` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    USE `db_shiro`;
    
    /*Table structure for table `users` */
    
    DROP TABLE IF EXISTS `users`;
    
    CREATE TABLE `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `userName` varchar(20) DEFAULT NULL,
      `password` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    
    /*Data for the table `users` */
    
    insert  into `users`(`id`,`userName`,`password`) values (1,'zuoyan','zuoyan123');
    
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
  • 相关阅读:
    My97 DatePicker 的jQuery插件
    UITableView 的 delegate2个基本方法
    你还在使用myImage = [UIImage imageNamed:@"icon.png"];吗
    自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)
    自动生成数学题型二(框架struts2)题型如((a+b)*c=d)
    自动生成数学题型一 (框架Struts2) 题型如(a+b=c)
    创业团队应具备的要素
    在服务器中linux的centos系统如何封ip
    创业成功:必须具备的12个要点
    PHP+mysqli如何连接MySQL数据库,MySQL, Improved
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/7923445.html
Copyright © 2011-2022 走看看