标签:环境 构建 account username 配置文件 package 代码 操作 方法
Shiro最重要的两个功能为:认证和授权
Shiro是一个Java平台的开源权限框架,用于认证和访问授权。具体来说,满足对如下元素的支持:
在shiro架构中,有3个最主要的组件:Subject,SecurityManager,Realm。
Subject本质上就是当前访问用户的抽象描述。
SecurityManager是Shiro架构中最核心的组件,通过它可以协调其他组件完成用户认证和授权。实际上,SecurityManager就是Shiro框架的控制器。
Realm定义了访问数据的方式,用来连接不同的数据源,如:LDAP,关系数据库,配置文件等等。
认证流程:
授权流程:
==================================================================================================================
1 最简单的认证授权的代码如下: 2 3 package com.shiro; 4 5 import org.apache.shiro.SecurityUtils; 6 import org.apache.shiro.authc.UsernamePasswordToken; 7 import org.apache.shiro.mgt.DefaultSecurityManager; 8 import org.apache.shiro.mgt.SecurityManager; 9 import org.apache.shiro.realm.SimpleAccountRealm; 10 import org.apache.shiro.subject.Subject; 11 import org.springframework.stereotype.Component; 12 13 /** 14 * description: 15 * author: Wangys 16 * Date: 2018-11-23 17 */ 18 @Component 19 public class ShiroTest { 20 21 SimpleAccountRealm realm = new SimpleAccountRealm(); 22 23 public void setAccount() { 24 realm.addAccount("Summer", "password", "admin"); 25 } 26 27 public void testShiro() { 28 29 // 构建SecurityManager环境 30 DefaultSecurityManager manager = new DefaultSecurityManager(); 31 manager.setRealm(realm); 32 33 // 主体提交认证请求 34 SecurityUtils.setSecurityManager(manager); 35 Subject subject = SecurityUtils.getSubject(); 36 UsernamePasswordToken token = new UsernamePasswordToken("Summer", "password"); 37 38 subject.login(token); 39 // 认证 40 subject.isAuthenticated(); 41 // 授权 42 subject.checkRoles("admin"); 43 } 46 }
下面我们看下认证与授权调用的具体实现方法
授权:hasRoles方法点下去调用的是AuthorizingRealm中的checkRoles()方法
认证调用的是AuthenticatingSecurityManager中的authenticate()方法 ,AuthenticatingSecurityManager继承RealmSecurityManager
继续点击去调用的是ModularRealmAuthenticator中的认证方法
所以认证与授权都是以Realm为主体来实现的。
标签:环境 构建 account username 配置文件 package 代码 操作 方法
原文地址:https://www.cnblogs.com/rain-in-summer/p/10037156.html