java鬼混笔记:shiro 1、基本ini配置文件的登录认证
2017-08-27 16:01
615 查看
这次的笔记是写的 shiro的第一个简单的例子,基本ini配置文件的登录验证。
什么是shiro这个百度百科就有了,这里不多说了。shiro登录验证程序怎么跑了,根据我在网上找的和自己点点点源码看到的总结一下,其他和网友的的说法差不多,我这就直接复制别人的啦;
转的文章里也有授权流程说明 , 不过这里只主验证的先,不说了,上代码,跟着上面的流程走。。。
先设置ini配置文件的打开方式,不然会弹出系统的编辑方式:eclipse-window-General-Editors-File Associations,找到*.ini,设置成Properties File Editor(default),如下图
好,先创建一个maven项目,结构如下图:
pom.xml(人懒就直接 shiro-all...)
接着创建一个shiro_base.ini文件,我放在config/目录下,习惯了,公司也是这么放的,打开shiro_base.ini,写点东西,如下图:
提醒一下.ini文件的注释是 以;号开始的
开始测试认证
Test.java
OK...
什么是shiro这个百度百科就有了,这里不多说了。shiro登录验证程序怎么跑了,根据我在网上找的和自己点点点源码看到的总结一下,其他和网友的的说法差不多,我这就直接复制别人的啦;
这个部分转自于:http://blog.csdn.net/mine_song/article/details/61616259
subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。 securityManager:安全管理器,主体进行认证和授权都是通过securityManager进行。 authenticator:认证器,主体进行认证最终通过authenticator进行的。 authorizer:授权器,主体进行授权最终通过authorizer进行的。 sessionManager:web应用中一般是用web容器对session进行管理,shiro也提供一套session管理的方式。 SessionDao: 通过SessionDao管理session数据,针对个性化的session数据存储需要使用sessionDao。 cache Manager:缓存管理器,主要对session和授权数据进行缓存,比如将授权数据通过cacheManager进行缓存管理,和ehcache整合对缓存数据进行管理。 realm:域,领域,相当于数据源,通过realm存取认证、授权相关数据 1、通过ini配置文件创建securityManager 2、调用subject.login方法主体提交认证,提交的token 3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。 4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息 5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro.ini查询用户信息,根据账号查询用户信息(账号和密码) 如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码) 如果查询不到,就给ModularRealmAuthenticator返回null 6、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息 如果返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException) 如果返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在) 和 token中的密码 进行对比,如果不一致抛出异常(org.apache.shiro.authc.IncorrectCredentialsException)
转的文章里也有授权流程说明 , 不过这里只主验证的先,不说了,上代码,跟着上面的流程走。。。
先设置ini配置文件的打开方式,不然会弹出系统的编辑方式:eclipse-window-General-Editors-File Associations,找到*.ini,设置成Properties File Editor(default),如下图
好,先创建一个maven项目,结构如下图:
pom.xml(人懒就直接 shiro-all...)
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ywj</groupId> <artifactId>TestShiro</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>TestShiro</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-all --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</artifactId> <version>1.3.2</version> <type>pom</type> </dependency> <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3</version> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies> </project>
接着创建一个shiro_base.ini文件,我放在config/目录下,习惯了,公司也是这么放的,打开shiro_base.ini,写点东西,如下图:
提醒一下.ini文件的注释是 以;号开始的
开始测试认证
Test.java
package com.ywj.TestShiro; import org.apache.shiro.SecurityUtils; 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; public class Test { public static void main(String[] args) { // 先创建一个SecurityManager环境 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:config/shiro_base.ini");// 对应config 下面的base_shiro.ini文件 // 得到一个securityManager实例 SecurityManager securityManager = factory.getInstance(); // 配置当前的环境是上面创建的securityManager SecurityUtils.setSecurityManager(securityManager); // 创建一个subject, 访问当前系统的一个主体 Subject subject = SecurityUtils.getSubject(); // 一个token, 这个token的参数是 账号(ywj)和密码(888),用户登录或其他操作输入的账号和密码 UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("ywj", "888"); try { // subject进行认证 subject.login(usernamePasswordToken); } catch (UnknownAccountException e) { System.out.println("用户不存在"); } catch (IncorrectCredentialsException e) { System.out.println("密码不正确"); } catch (Exception e) { e.printStackTrace(); } // 是否已登录 , 是返回一个true 不是就返回一个false boolean flag = subject.isAuthenticated(); System.out.println("已登录:"+flag); // 退出 subject.logout(); flag = subject.isAuthenticated(); System.out.println("已登录:"+flag); } }
OK...
相关文章推荐
- java鬼混笔记:shiro 6、shiro和spring整合、数据库方式认证登录
- java鬼混笔记:shiro 11、唯一登录和登录退出Bug
- java鬼混笔记:shiro 5、shiro授权判断,基本动态获取权限
- java鬼混笔记:shiro 9、缓存授权,免重新登录更新用户权限
- java鬼混笔记:shiro 4、shiro授权判断,基本ini配置
- java鬼混笔记:shiro 10、在线用户、踢人下线、唯一登录
- 安全认证框架Shiro (一)- ini配置文件
- java鬼混笔记:apache log4j基本配置和捕获异常打印
- java鬼混笔记:shiro 2、自定义realm进行认证
- Java读取和修改ini配置文件
- Java_读取INI配置文件
- Java 学习笔记04:Spring XML配置文件Bean
- Java读取和修改ini配置文件
- debian基本设置以及配置XManager远程登录桌面、命令行设置、Xftp上传下载文件
- Java读取解析INI配置文件
- 用java读写ini配置文件(转)
- java学习笔记6 - 使用commons configuration管理配置文件
- java反射学习笔记三(改进笔记二放到配置文件中)
- 第1章 Java基本概念及环境配置——FAQ1.17 怎样制作鼠标双击就可以运行的Jar文件?
- 话说Java jdbc数据库连接,从配置文件中读取连接基本信息实例