文档章节

shiro学习之认证

gitOpen_1
 gitOpen_1
发布于 2017/09/08 17:25
字数 265
阅读 5
收藏 0

shiro框架的认证机制是基于securityManager的

认证流程:

1.创建securityManager对象并指定realm,此处我使用了自定义的realm

org.apache.shiro.mgt.SecurityManager securityManager = new DefaultSecurityManager(new MyRealm());
		SecurityUtils.setSecurityManager(securityManager);
		
		Subject subject = SecurityUtils.getSubject();

 

自定义realm的代码

public class MyRealm extends AuthorizingRealm{
	private String username = "zs";
	
	private String password = "123";
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(
			PrincipalCollection principals) {
		return null;
	}

	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(
			AuthenticationToken token) throws AuthenticationException {
		String uname = (String) token.getPrincipal();
		String pw = new String((char[])token.getCredentials());
		
		AuthenticationInfo info;
		if(username.equals(uname)&&password.equals(pw)){
			//成功后手动封装一个登陆信息类
			info = new  SimpleAuthenticationInfo(uname,pw,getName());
			return info;
		}else{
			throw new UnknownAccountException();
		}
		

2.创建token对象.通常实用usernameAndPasswordToken来构建

AuthenticationToken token = new UsernamePasswordToken("zst","123");

3.调用subject对象中的login方法.

try {
			subject.login(token);
		} catch (AuthenticationException e) {
			System.out.println("用户名或密码错误");
		}

shiro框架做了什么呢?

首先在调用login方法后会将令牌和subject对象交给securityManager来进行认证

   

然后会交给authenticator验证身份,调用doAuthenticate方法

通过realm对象完成验证

验证完成后生成登录成功对象

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 初识RESTful
gitOpen_1
粉丝 2
博文 24
码字总数 15623
作品 0
广州
后端工程师
私信 提问
Spring+Shiro+CAS整合配置笔记

一、前言 Apache Shiro与Spring Security一样是Java的一个安全框架。那为什么与Spring整合却用Shiro?不要问为什么,任性!开个玩笑:D 其实我个人是认为Spring Security太过于笨重,要写太多...

qllinhongyu
2014/12/09
0
0
jfinal整合shiro回顾

目前jfinal使用shiro进行身份验证和授权的后台实现已完成,现在我再来总结下学习过程及代码实现过程。最近半年多项目开发都用.net,但又不甘心用了一年多的java,jfinal就这样被废弃,所以就...

一个yuanbeth
2017/08/30
682
4
Shiro学习系列教程四:集成web(二)

本讲主要内容: 1:shiro对访问URL可使用通配符进行匹配 2:shiro标签的使用 3:shiro会话的机制 URL匹配方式: 演示: 现在shiro.ini配置的路径为: 直接访问/admin Ok.没问题。 那么我们访...

799879287
2017/10/21
0
0
Shiro学习系列教程四:集成web(二)

本讲主要内容: 1:shiro对访问URL可使用通配符进行匹配 2:shiro标签的使用 3:shiro会话的机制 URL匹配方式: 演示: 现在shiro.ini配置的路径为: 直接访问/admin Ok.没问题。 那么我们访...

凯哥java
2017/10/21
0
0
【Shiro】Shiro从小白到大神(一)-Shiro入门

本系列是我在学习Shiro的路上的笔记,第一篇是属于非常入门级别的。 首先是介绍了下shiro,然后进行了一个小例子进行实际的操作 本节操作不涉及数据库,只是文本字符操作认证 Shiro简介: 百度...

qq_26525215
2017/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Quartz监听器Listerner

概述 Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知。Quartz监听器主要有JobListener、TriggerListener、SchedulerListener三种,顾名思义,分别表示任务、...

大笨象会跳舞吧
19分钟前
3
0
Call exception, tries=10, retries=35, started=38348 ms ago, cancelled=false, msg=pc-node1 row

写hbase的问题,2019-01-18 23:23:28,082 | INFO | [hconnection-0x6431d54d-shared--pool2-t5] | Call exception, tries=10, retries=35, started=38348 ms ago, cancelled=false, msg=p......

stys35
22分钟前
2
0
docker 安装portainer、gogs、redis、mongodb、es、rabbitmq、mysql、jenkins、harbor

1、准备三台虚拟机ip如下 编号 Ip 1 192.168.100.101 2 192.168.100.102 3 192.168.100.103 2、镜像应用编排 192.168.100.101 主要安装系统运维相关服务 192.168.100.102 主要安装mysql、mon...

北岩
32分钟前
4
0
storm 提交任务报SocketException错误及解决办法

提交任务爆错: org.apache.storm.thrift.transport.TTransportException: java.net.SocketException: Broken pipe (Write failed) ..... Caused by: org.apache.storm.thrift.transport.TTr......

jingshishengxu
36分钟前
1
0
值得收藏:一份非常完整的MySQL规范

一、数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命...

Java干货分享
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部