文档章节

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对象完成验证

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

 

© 著作权归作者所有

共有 人打赏支持
gitOpen_1
粉丝 1
博文 24
码字总数 15623
作品 0
广州
后端工程师
jfinal整合shiro回顾

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

我是程序yuan
2017/08/30
123
4
Spring+Shiro+CAS整合配置笔记

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

qllinhongyu
2014/12/09
0
0
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

没有更多内容

加载失败,请刷新页面

加载更多

记Structured Streaming 2.3.1的OOM排查过程

记Structured Streaming 2.3.1的OOM排查过程 缘起 最近在使用Structured Streaming开发一套自助配置SQL的来生成流式作业的平台,在测试的过程中发现有些作业长时间运行后会有Executor端的OOM...

纳兰清风
3分钟前
0
0
通过 websocket 连接 openfire

通过 websocket 连接 openfire 一、简介 老版本是需要安装websocket插件的。之前版本就不说了。 二、 引入XML与JSON互转的js <script src="lib/XML/ObjTree.js"></script><script src="lib......

lwenhao
6分钟前
0
0
MicropPython的学习,如何从0到1?

是Java还是C++ ? 是Go还是Python? 你为你最爱或者最熟悉的编程语言打Call了吗? Python在国外是一门非常热门的编程语言,近些年在国内也被发掘与追捧, Python的开放、简洁、黏合正符合了现发...

bodasisiter
8分钟前
0
0
Django框架17: Celery的使用

Celery介绍 1.什么是Celery Celery是一个python模块,它在官网的定义:Celery is asynchronous task queue/job based on distributed message passing. It is focused on real-time operatio......

代码打碟手
14分钟前
0
0
poi的excel解析工具类

import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.time.DateFormatUtils;import org.apache.commons.lang.time.DateUtils;import org.apache.poi.hssf.use......

Sheav
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部