文档章节

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
粉丝 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

没有更多内容

加载失败,请刷新页面

加载更多

使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
38分钟前
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0
纹理与表面细节添加方法---OpenGL纹理函数

OpenGL线纹理函数 OpenGL表面纹理函数 OpenGL体纹理函数 OpenGL纹理图案的颜色选项 OpenGL纹理映射选项 OpenGL纹理环绕 复制帧缓存中的OpenGL纹理图案 OpenGL纹理坐标数组 OpenGL纹理图案命名...

中国龙-扬科
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部