• (八)shiro之jdbcRealm


    • pom.xml
    <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">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.shyroke.www</groupId>
        <artifactId>firstShiro</artifactId>
        <packaging>war</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>firstShiro Maven Webapp</name>
        <url>http://maven.apache.org</url>
    
        <properties>
            <shiro.version>1.3.2</shiro.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.7.21</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.1.7</version>
                <scope>runtime</scope>
            </dependency>
    
    
            <!-- Shiro dependencies: -->
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>${shiro.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-web</artifactId>
                <version>${shiro.version}</version>
            </dependency>
    
            <dependency>
                <groupId>c3p0</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.1.2</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>6.0.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.25</version>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
        <build>
            <finalName>firstShiro</finalName>
        </build>
    </project>
    • shiro.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/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    dataSource.user=root
    dataSource.password=""
    jdbcRealm.dataSource=$dataSource
    • 本例中使用连接池。
    • 注:密码为空就填双引号,但是不能不填。
    • 测试类
    public class TestMain {
        public static void main(String[] args) {
    
            
            Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini");
            SecurityManager securityManager=factory.getInstance();
            
            SecurityUtils.setSecurityManager(securityManager);
            
            Subject subject=SecurityUtils.getSubject();
            UsernamePasswordToken token=new UsernamePasswordToken("admin", "12342");
            
            try {
                subject.login(token);
                System.out.println("登录成功");
            } catch (UnknownAccountException e) {
                System.out.println("用户名错误");
            }catch(IncorrectCredentialsException e){
                System.out.println("密码错误");
            }
            
            System.out.println(securityManager);
            
        }
    }
    • 数据库。注意:这里的userName和password不能修改为其他名字,而且表明users也不能修改.

    •  结果:

  • 相关阅读:
    基于Andoird 4.2.2的同步框架源代码学习——同步发起端
    C#MD5为密码加密
    YOUYOU深入学习Ganglia之三(gmetad的软件架构)
    js原生appendChild的bug
    Spring MVC 教程,快速入门,深入分析
    Centos 6.4 Linux 相关问题总结
    jQuery插件之-瀑布流插件
    编辑简单的 shell程序
    Qt国际化相关类
    三层架构与MVC
  • 原文地址:https://www.cnblogs.com/shyroke/p/7867334.html
Copyright © 2020-2023  润新知