爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Shiro安全框架

      首页 知识中心 云端实践 文章详情页

      Shiro安全框架

      2024-10-21 09:44:06 阅读次数:24

      Shiro

      什么是Shiro

      Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

      Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架 应该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力。

      以 下是你可以用 Apache Shiro 所做的事情:

      验证用户来核实他们的身份 对用户执行访问控制,如: 判断用户是否被分配了一个确定的安全角色

      判断用户是否被允许做某事 在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。

      在身份验证,访问控制期间或在会话的生命周期,对事件作出反应。

      聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。

      启用单点登录(SSO)功能。

      为没有关联到登录的用户启用"Remember Me"服务

      与Spring Security的对比

      Shiro: Shiro较之 Spring Security,Shiro在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。

      1. 易于理解的 Java Security API;
      2. 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
      3. 对角色的简单的签权(访问控制),支持细粒度的签权;
      4. 支持一级缓存,以提升应用程序的性能;
      5. 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
      6. 异构客户端会话访问;
      7. 非常简单的加密 API;
      8. 不跟任何的框架或者容器捆绑,可以独立运行

      Spring Security:

      除了不能脱离Spring,shiro的功能它都有。而且Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手 动实现。Spring Security的权限细粒度更高。

      Shiro的功能模块

      Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助

      我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非 常简单;其基本功能点如下图所示:

      Shiro安全框架

      Authentication:身份认证/登录,验证用户是不是拥有相应的身份。

      Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情。

      Session Management:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话 中;会话可以是普通JavaSE环境的,也可以是如Web环境的。

      Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储。

      Web Support:Shiro 的 web 支持的 API 能够轻松地帮助保护 Web 应用程序。

      Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率。

      Concurrency:Apache Shiro 利用它的并发特性来支持多线程应用程序。

      Testing:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。

      "Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

      "Remember Me":记住我。

      Shiro的内部结构

      Shiro安全框架

      Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;

      SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心 脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会 话、缓存的管理。

      Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实 现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;

      Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的 哪些功能;

      Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可 以是LDAP实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储; 所以我们一般在应用中都需要实现自己的Realm;

      SessionManager:如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个 组件就是SessionManager;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境、EJB等环境; 所有呢,Shiro就抽象了一个自己的Session来管理主体与应用之间交互的数据;

      SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可 以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的 Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;

      CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到 缓存中后可以提高访问的性能

      Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。

      Shiro安全框架

      也就是说对于我们而言,最简单的一个Shiro应用:

      1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;

      2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判 断。

      从以上也可以看出,Shiro不提供维护用户/权限,而是通过Realm让开发人员自己注入。

      Shiro的入门

      搭建基于ini的运行环境

      (1)创建工程导入shiro坐标

      <dependencies>
              <dependency>
                  <groupId>org.apache.shiro</groupId>
                  <artifactId>shiro-core</artifactId>
                  <version>1.3.2</version>
              </dependency>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.12</version>
                  <scope>test</scope>
              </dependency>
          </dependencies>

      用户认证

      认证:身份认证/登录,验证用户是不是拥有相应的身份。基于shiro的认证,是通过subject的login方法完成用户

      认证工作的

      (1)在resource目录下创建shiro的ini配置文件构造模拟数据(shiro-auth.ini)

      [users]
      #模拟从数据库查询的用户
      #数据格式   用户名=密码
      zhangsan=123456
      lisi=654321

      (2)测试用户认证

      @Test
          public void testLogin() throws Exception{
              //1.加载ini配置文件创建SecurityManager
              Factory<SecurityManager> factory = new
      IniSecurityManagerFactory("classpath:shiro.ini");
              //2.获取securityManager
              SecurityManager securityManager = factory.getInstance();
              //3.将securityManager绑定到当前运行环境
              SecurityUtils.setSecurityManager(securityManager);
              //4.创建主体(此时的主体还为经过认证)
              Subject subject = SecurityUtils.getSubject();
              /**
               * 模拟登录,和传统等不同的是需要使用主体进行登录
               */
              //5.构造主体登录的凭证(即用户名/密码)
              //第一个参数:登录用户名,第二个参数:登录密码
              UsernamePasswordToken upToken = new UsernamePasswordToken("zhangsan","123456");
              //6.主体登录
              subject.login(upToken);
              //7.验证是否登录成功
              System.out.println("用户登录成功="+subject.isAuthenticated());
              //8.登录成功获取数据
              //getPrincipal 获取登录成功的安全数据
              System.out.println(subject.getPrincipal());
         }

      用户授权

      授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用

      户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限 (1)在resource目录下创建shiro的ini配置文件构造模拟数据(shiro-prem.ini)

      [users]
      #模拟从数据库查询的用户
      #数据格式   用户名=密码,角色1,角色2..
      zhangsan=123456,role1,role2
      lisi=654321,role2
      [roles]
      #模拟从数据库查询的角色和权限列表
      #数据格式   角色名=权限1,权限2
      role1=user:save,user:update
      role2=user:update,user.delete
      role3=user.find

      (2)完成用户授权

      package cn.itcast.shiro;
      import org.apache.shiro.SecurityUtils;
      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;
      import org.junit.Test;
      public class ShiroTest1 {
          @Test
          public void testLogin() throws Exception{
              //1.加载ini配置文件创建SecurityManager
              Factory<SecurityManager> factory = new
      IniSecurityManagerFactory("classpath:shiro.ini");
              //2.获取securityManager
              SecurityManager securityManager = factory.getInstance();
              //3.将securityManager绑定到当前运行环境
              SecurityUtils.setSecurityManager(securityManager);
              //4.创建主体(此时的主体还为经过认证)
              Subject subject = SecurityUtils.getSubject();
              /**
               * 模拟登录,和传统等不同的是需要使用主体进行登录
               */
              //5.构造主体登录的凭证(即用户名/密码)
              //第一个参数:登录用户名,第二个参数:登录密码
              UsernamePasswordToken upToken = new UsernamePasswordToken("lisi","654321");
              //6.主体登录
              subject.login(upToken);
              //7.用户认证成功之后才可以完成授权工作
              boolean hasPerm = subject.isPermitted("user:save");
              System.out.println("用户是否具有save权限="+hasPerm);
              }
      }

      自定义Realm

      Realm域:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么

      它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行 验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源

      (1)自定义Realm

      package cn.itcast.shiro;
      import org.apache.shiro.authc.*;
      import org.apache.shiro.authz.AuthorizationInfo;
      import org.apache.shiro.authz.SimpleAuthorizationInfo;
      import org.apache.shiro.realm.AuthorizingRealm;
      import org.apache.shiro.subject.PrincipalCollection;
      import java.util.ArrayList;
      import java.util.List;
      /**
      * 自定义realm,需要继承AuthorizingRealm父类
      *     重写父类中的两个方法
      *         doGetAuthorizationInfo     :授权
      *         doGetAuthenticationInfo     :认证
      */
      public class PermissionRealm extends AuthorizingRealm {
          @Override
          public void setName(String name) {
              super.setName("permissionRealm");
         }
          /**
           * 授权:授权的主要目的就是查询数据库获取用户的所有角色和权限信息
           */
          protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection
      principalCollection) {
              // 1.从principals获取已认证用户的信息
              String username = (String) principalCollection.getPrimaryPrincipal();
              /**
               * 正式系统:应该从数据库中根据用户名或者id查询
               *         这里为了方便演示,手动构造
               */
              // 2.模拟从数据库中查询的用户所有权限
              List<String> permissions = new ArrayList<String>();
              permissions.add("user:save");// 用户的创建
              permissions.add("user:update");// 商品添加权限
               // 3.模拟从数据库中查询的用户所有角色
              List<String> roles = new ArrayList<String>();
              roles.add("role1");
              roles.add("role2");
              // 4.构造权限数据
              SimpleAuthorizationInfo simpleAuthorizationInfo = new
      SimpleAuthorizationInfo();
              // 5.将查询的权限数据保存到simpleAuthorizationInfo
              simpleAuthorizationInfo.addStringPermissions(permissions);
              // 6.将查询的角色数据保存到simpleAuthorizationInfo
              simpleAuthorizationInfo.addRoles(roles);
              return simpleAuthorizationInfo;
         }
          /**
           * 认证:认证的主要目的,比较用户输入的用户名密码是否和数据库中的一致
           */
          protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken
      authenticationToken) throws AuthenticationException {
              //1.获取登录的upToken
              UsernamePasswordToken upToken = (UsernamePasswordToken)authenticationToken;
              //2.获取输入的用户名密码
              String username = upToken.getUsername();
              String password = new String(upToken.getPassword());
              /**
               * 3.验证用户名密码是否正确
               * 正式系统:应该从数据库中查询用户并比较密码是否一致
               *         为了测试,只要输入的密码为123456则登录成功
               */
              if(!password.equals("123456")) {
                  throw  new RuntimeException("用户名或密码错误");//抛出异常表示认证失败
             }else{
                  SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username, 
      password,
                          this.getName());
                  return info;
             }
         }
      }

      (2)配置shiro的ini配置文件(shiro-realm.ini)

      [main]
      #声明realm
      permReam=cn.itcast.shiro.PermissionRealm
      #注册realm到securityManager中
      securityManager.realms=$permReam

      (3)验证

      package cn.itcast.shiro;
      import org.apache.shiro.SecurityUtils;
      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;
      import org.junit.Before;
      import org.junit.Test;
      public class ShiroTest2 {
          private SecurityManager securityManager;
          @Before
          public void init() throws Exception{
              //1.加载ini配置文件创建SecurityManager
              Factory<SecurityManager> factory = new
      IniSecurityManagerFactory("classpath:shiro-realm.ini");
              //2.获取securityManager
              SecurityManager securityManager = factory.getInstance();
              //13.将securityManager绑定到当前运行环境
              SecurityUtils.setSecurityManager(securityManager);
         }
          @Test
          public void testLogin() throws Exception{
              //1.创建主体(此时的主体还为经过认证)
              Subject subject = SecurityUtils.getSubject();
              //2.构造主体登录的凭证(即用户名/密码)
              UsernamePasswordToken upToken = new UsernamePasswordToken("lisi","123456");
              //3.主体登录
              subject.login(upToken);
              //登录成功验证是否具有role1角色
              //System.out.println("当前用户具有role1="+subject.hasRole("role3"));
              //登录成功验证是否具有某些权限
              System.out.println("当前用户具有user:save权限="+subject.isPermitted("user:save"));
         }
      }

      认证与授权的执行流程分析

      (1)认证流程

      Shiro安全框架

      1. 首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过

      SecurityUtils. setSecurityManager()设置; 2. SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证; 3. Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实 现; 4. Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认 ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证; 5. Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回/抛出异常表示身份 验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进行访问。

      (2)授权流程

      Shiro安全框架

      1. 首先调用Subject.isPermitted/hasRole接口,其会委托给SecurityManager,而SecurityManager接着会委托给Authorizer;
      2. Authorizer是真正的授权者,如果我们调用如isPermitted(“user:view”),其首先会通过PermissionResolver把字符串转换成相应的Permission实例;
      3. 在进行授权之前,其会调用相应的Realm获取Subject相应的角色/权限用于匹配传入的角色/权限;
      4. Authorizer会判断Realm的角色/权限是否和传入的匹配,如果有多个Realm,会委托给ModularRealmAuthorizer进行循环判断,如果匹配如isPermitted/hasRole会返回true,否则返回false表示授权失败。
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/tntxia/12132069,作者:虾王之王,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:前端框架AngularJS入门

      下一篇:Grunt Web程序构建框架

      相关文章

      2025-03-06 09:15:52

      Shiro会话管理和缓存管理

      Shiro会话管理和缓存管理

      2025-03-06 09:15:52
      shiro , Shiro , 会话 , 管理
      2025-01-14 09:17:05

      我爱java系列之---【单点登录】

      我爱java系列之---【单点登录】

      2025-01-14 09:17:05
      CAS , Shiro , 用户 , 登录 , 系统 , 认证
      2023-07-18 10:01:52

      Realm中配置散列

      ini 文件当中配置散列相关配置内容如下所示:要保证存储在数据库中的密码是经过散列之后的,不然认证器进行认证的时候是通过你定义的规则去进行认证的,而你数据库存储的不一致会导致不成功,假如你设置认证的相关信息为盐为 ​​BNTang​​​ 而

      2023-07-18 10:01:52
      数据库 , 用户
      2023-07-17 08:10:17

      Shiro-认证

      什么是认证也就是身份认证,就是判断一个用户是否为合法用户的处理过程,通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令是否一致,来判断用户的身份是否正确。关键对象对面名称概述Subject(主体)用户Principa

      2023-07-17 08:10:17
      Shiro , 用户
      2023-07-17 08:10:17

      Shiro的核心概念

      核心类整体类图如下图所示:类名作用Authentication身份认证,也就是登录,验证用户是不是拥有相应的身份Authorization授权,也就是权限验证,验证某个已认证的用户是否拥有某个权限Session Manager会话管理,就是

      2023-07-17 08:10:17
      Shiro , 用户 , 缓存
      2023-07-04 07:09:30

      【SpringBoot技术专题】「权限校验专区」Shiro整合JWT授权和认证实现

      本章介绍一下常用的认证框架Shiro结合springboot以及集合jwt快速带您开发完成一个认证框架机制。Maven配置依赖Shiro 配置类注意SecurityManager类导入的应该是 import org.apache.shiro

      2023-07-04 07:09:30
      JWT , Shiro , SpringBoot
      2023-06-28 09:11:13

      Shiro过滤器源码

      过滤器 Shiro还提供了过滤器,可以配置我们的过滤规则,过滤规则对顺序是有要求的,短路优先原则,也就是前面的适配成功之后,就不会再适配后面的规则了。 Shiro是一个强大易用的Java安全框架,提供

      2023-06-28 09:11:13
      Shiro , 拦截器 , 过滤
      2023-06-19 06:55:52

      Shiro单用户登录,清理之前登录的用户

      在自定义的realm中的doGetAuthenticationInfo方法中定义,根据传入参数类型的不同选择对应的处理方法方法一传入的参数是User对象方法二传入的参数是userName字符串

      2023-06-19 06:55:52
      java , Shiro
      2023-05-16 09:43:03

      Shiro-授权

      什么是授权授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限,方可访问系统的资源,对于某些资源没有权限是无法访问的这就是授权。使用 ini 的形式配置权限信息在 ini 文件中设置用户、角色、权限的配置规则。用户名=密码

      2023-05-16 09:43:03
      Shiro , 权限
      2023-02-27 09:30:53

      Shiro实现记住我(十)

      上一章简单介绍了 Shiro整合EhCache缓存(九),如果没有看过,​​请观看上一章​​一. 记住我功能记住我, 就是

      2023-02-27 09:30:53
      Shiro
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5219725

      查看更多

      热门标签

      客户端 实践 基础知识 Java 服务器 java 数据库 框架 python 服务端 学习 代码 简单 javascript 编程
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号