Shrio的入门例子,从基础教你使用shrio

首先我们要介绍一下shrio

有关的shrio的简介请参考:
http://wiki.jikexueyuan.com/project/shiro/overview.html

然后我们就要来第一个shrio的程序了。
1. 添加依赖,使用的是Maven(如果还在用原始jar包构建项目的的读者朋友了可以考虑更换了,Maven依赖只要一个pom文件就能管理你的项目几乎所有的jar包依赖)

<dependencies>
        <!--shrio支持测试,所以直接添加-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--  commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
        <!--shrio核心包-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
        </dependency>

        <!--下面是项目日志需要的slf4j和log4j的依赖包,没有下面的依赖,运行会曝出没有找到一些类-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

注意上面的依赖,缺一不可,使用maven的朋友们直接复制就好

2.加入了日志依赖,我们就不可或缺的要一个log4j.properties文件了

#config root logger
log4j.rootLogger = INFO,system.out
log4j.appender.system.out=org.apache.log4j.ConsoleAppender
log4j.appender.system.out.layout=org.apache.log4j.PatternLayout
log4j.appender.system.out.layout.ConversionPattern=MINAServer Logger-->%5p{%F:%L}-%m%n

#config this Project.file logger
log4j.logger.thisProject.file=INFO,thisProject.file.out
log4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppender
log4j.appender.thisProject.file.out.File=logContentFile.log
log4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout

3. 下面我们就要简单实现用户验证的一个例子,为了简单,我们模拟数据库的两个用户写入shrio.ini中

[users]
zhang=123
wang=123

4. 创建测试类来试试我们的shrio

public class ShrioHelloWorld {
@Test
public void testHelloWorld(){
    //1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
    Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//2、得到SecurityManager实例 并绑定给SecurityUtils
SecurityManager securityManager = factory.getInstance();
// SecurityUtils设置安全管理对象
SecurityUtils.setSecurityManager(securityManager);
//3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
//根据虚拟用户名设置一个token
UsernamePasswordToken token = new UsernamePasswordToken("wang", "123");
try {
//4、登录,即身份验证,如果token的用户信息和ini文件的信息不匹配,那么就失败怕出异常。
subject.login(token);
System.out.println("验证成功!!");
} catch (AuthenticationException e) {
//5、身份验证失败
System.out.println("登陆验证失败");
e.printStackTrace();
}
//断言用户已经登录
Assert.assertEquals(true, subject.isAuthenticated()); 
//6、退出
subject.logout();
    }
}

好了,这样的一个小例子就完了,测试的时候,可以修改token中用户的信息,比如username为赵 密码为111(这种情况下无疑会输出验证失败,然后抛出异常信息)。

下面总结一下学习新技术的方法:
1. 敲代码
2. 测试
3. 修改一些信息或者一写参数。在测试。
4. 记住这些特征,然后思考哪些能动态控制,哪些是固定的。
5. 思考那些地方用得到这个技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值