一 . 环境的搭建
我们使用maven来搭建工程.
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.0</version> </dependency>
本次使用的1.3.0的版本.
当然为了更好的shiro的运行过程,我们导入日志组件包.
本次使用log4j来完成.
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <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> </dependency>
二 .在resource目录下创建一个shiro.int文件
[users] zhangsan=123 trek=123
我们创建了两个固定信息的用户,一个是张三,密码为123.另一个为trek,密码为123.
三.实现认证
public class ShiroTest { private static final Logger logger = LoggerFactory.getLogger(ShiroTest.class); public static void main(String[] args) { //创建SecurityManager SecurityManager manager = new IniSecurityManagerFactory("classpath:shiro.ini").getInstance(); //将securityManager设置到当前环境下 SecurityUtils.setSecurityManager(manager); //获取Subject对象 Subject subject = SecurityUtils.getSubject(); //创建token -- UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","1233"); //实现登录 try { subject.login(token); } catch (AuthenticationException e) { logger.error("认证失败!!!"); return ; } logger.info("认证成功!!!"); } }
整个认证的过程非常简单:
[1]前面的部分我们不需要关注.主要知道我们在设置SecurityManager就可以了.
[2]创建Subjcet对象,将账号和密码传给login方法
[3]这个方法会出现异常,我们需要进行捕获.这个异常的问题我们后面会重点关注的.
[4]如果没有问题就说明我们的认证过程成功了.
AuthenticationException异常:
这个异常是shiro认证过程中的核心异常,shiro为我们创建了一些常用的异常.
如 : 账号不存的异常,密码不正确的异常,账号被锁定的异常等.
我们可以捕获不同的异常实现自己的业务逻辑.
总结一下 :
shiro的认证我们就需要调用login方法,传入token对象就可以了.
如果要自定义认证过程就需要重写认证器和Realm.这个过程是我们下面需要讲解的.