这篇文章开始,我们将演示shiro的基本实例,另外,正如前文所述,如果读者希望尽快了解shiro的相关内容,请移步到前文参考资料的链接中,下面,我们通过实际的代码,展示shiro的相关概念。
准备工作:
a.操作系统:win7 x64
b.开发工具:myeclipse 2014,jdk1.7,maven3.3.3
-----------------------------------------------------------------------------------------------------------------------------------
正文开始
1.创建工程shiro01,工程结构如如下:
在下图中,工程显示使用jdk1.5,是由于我们手动创建了src/main/java目录等,各位读者请自行在build path中将jdk1.5,切换到jdk1.7这样能够快速生成maven工程的正确目录结构。这里由于博主第一次创建是没有修改导致下面显示1.5版本,请读者们自行修改完成。
2.在步骤1中,我们创建了maven project,那么接下来,我们来书写相应的pom文件。关于maven的安装机配置,请读者自行参考网上的教程。这里不在叙述。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"写入上面的依赖,保存,maven会帮助我们自动的下载相关的包。下载号之后,我们在工程的maven dependencies下就可以看到如下内容,如果有遗漏,请读者认真检查。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.shiro</groupId>
<artifactId>shiro01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>shiro01</name>
<description>shiro01</description>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.13</version>
</dependency>
</dependencies>
</project>
3.创建用户列表文件,shiro.ini位置在src/main/resources下,请注意,一定按照如下的格式书写,等号前代表用户名,等号后面代表密码,每一行的结尾没有分号
[users]4.创建第一个“helloworld”程序
shiro01=1234
shiro02=1234
package com.shiro.test;5.其实上面的内容已经满足我们展示基本用例的内容了,但是在运行之后,控制台会提醒我们缺少log4j配置,因此我们在给出log4j的配置文件,方便我们在出错的时候查找错误。关于这个配置文件的书写,请读者自行搜索相关内容。
import org.apache.shiro.SecurityUtils;
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;
public class helloworld {
public static void main(String[] args) {
//读取配置文件,初始化SecurityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//获取SecurityManager实例
SecurityManager securityManager = factory.getInstance();
//把securityManager 实例绑定到SecurityUtils
SecurityUtils.setSecurityManager(securityManager);
//得到当前用户
Subject currentUser = SecurityUtils.getSubject();
//创建token令牌,用户名/密码
UsernamePasswordToken token = new UsernamePasswordToken("shiro01","1234");
try {
//登陆
currentUser.login(token);
System.out.println("success");
} catch (Exception e) {
e.printStackTrace();
System.out.println("fail");
}
//推出
currentUser.logout();
}
}
log4j.rootLogger=INFO, stdout6.运行上面的程序,我们可以看到控制台提示我们“success”,这里我们就不再放截图了。请读者运行之后,查看结果即可。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n
# General Apache libraries
log4j.logger.org.apache=WARN
# Spring
log4j.logger.org.springframework=WARN
# Default Shiro logging
log4j.logger.org.apache.shiro=TRACE
# Disable verbose logging
log4j.logger.org.apache.shiro.util.ThreadContext=WARN
log4j.logger.org.apache.shiro.cache.ehcache.EhCache=WARN
-------------------------------------------------------------------------------------------------------------------------------------
至此,shiro入门实战笔记(2)--helloworld结束
备注:
本文,我们只是演示shiro基本实例,请读者参考上面的实例代码。以及前文叙述的概念,仔细理解。后面我们会逐步介绍其概念及使用。
参考资料:
官方文档:http://shiro.apache.org/documentation.html
其他博文:http://jinnianshilongnian.iteye.com/blog/2018936