java鬼混笔记:shiro 1、基本ini配置文件的登录认证
来源:互联网 发布:视频录制软件电脑 编辑:程序博客网 时间:2024/06/06 12:33
这次的笔记是写的 shiro的第一个简单的例子,基本ini配置文件的登录验证。
什么是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配置文件创建securityManager2、调用subject.login方法主体提交认证,提交的token3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro.ini查询用户信息,根据账号查询用户信息(账号和密码) 如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码) 如果查询不到,就给ModularRealmAuthenticator返回null6、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();// 配置当前的环境是上面创建的securityManagerSecurityUtils.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 不是就返回一个falseboolean flag = subject.isAuthenticated();System.out.println("已登录:"+flag);// 退出subject.logout();flag = subject.isAuthenticated();System.out.println("已登录:"+flag);}}
OK...
阅读全文
0 0
- java鬼混笔记:shiro 1、基本ini配置文件的登录认证
- java鬼混笔记:shiro 4、shiro授权判断,基本ini配置
- java鬼混笔记:shiro 6、shiro和spring整合、数据库方式认证登录
- java鬼混笔记:shiro 2、自定义realm进行认证
- java鬼混笔记:shiro 3、shiro下的散列操作(MD5,SHA-1)
- java鬼混笔记:Hibernate:1、基本操作
- java鬼混笔记:shiro 5、shiro授权判断,基本动态获取权限
- java鬼混笔记:shiro 11、唯一登录和登录退出Bug
- java鬼混笔记:shiro 9、缓存授权,免重新登录更新用户权限
- java鬼混笔记:shiro 10、在线用户、踢人下线、唯一登录
- java鬼混笔记:java同父域的单点登录
- Shiro笔记(三)----Shiro配置文件ini详解
- java鬼混笔记:shiro 7、shiro验证码功能
- 安全认证框架Shiro (一)- ini配置文件
- java鬼混笔记:redis 1、常用的命令
- java鬼混笔记:lucene 5、index基本的增删查改
- Shiro 之认证登录的dem
- java鬼混笔记:shiro 8、连接数据库授权,注解设置权限
- Andrew Ng机器学习课程笔记--week3(逻辑回归&正则化参数)
- leetcode 459. Repeated Substring Pattern
- 软件保护技术
- Java多线程之线程间通信--生产者/消费者模式
- HBase的实现基础 Google Bigtable论文中文翻译
- java鬼混笔记:shiro 1、基本ini配置文件的登录认证
- Java-堆排序
- 有关图片上传c:\fakePath等问题
- 【算法】用两个栈模拟实现队列
- 机器学习概述
- Java堆排序
- android ndk 04 C语言 结构体_结构体指针,typedef
- 单例模式入门
- CSS3中的mix-blend-mode和background-blend-mode