shiro权限管理的配置

article/2025/9/19 20:17:20

建立一个权限管理配置类,在类上添加注解@Configuration,如下:

在这里插入图片描述

1、设置安全管理

在这里插入图片描述

@Bean
public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager,
CacheManager cacheShiroManager,
SessionManager sessionManager) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(this.shiroDbRealm());
securityManager.setCacheManager(cacheShiroManager);
//securityManager.setRememberMeManager(rememberMeManager);
securityManager.setSessionManager(sessionManager);
return securityManager;
}

2、 spring session管理器(多机环境)

在这里插入图片描述

@Bean
@ConditionalOnProperty(prefix = “oa”, name = “spring-session-open”, havingValue = “true”)
public ServletContainerSessionManager servletContainerSessionManager() {
return new ServletContainerSessionManager();
}

3、session管理器(单机环境)

在这里插入图片描述

@Bean
@ConditionalOnProperty(prefix = “oa”, name = “spring-session-open”, havingValue = “false”)
public DefaultWebSessionManager defaultWebSessionManager(CacheManager cacheShiroManager, OaProperties gunsProperties) {
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setCacheManager(cacheShiroManager);
sessionManager.setSessionValidationInterval(gunsProperties.getSessionValidationInterval() * 1000);
sessionManager.setGlobalSessionTimeout(gunsProperties.getSessionInvalidateTime() * 1000);
sessionManager.setDeleteInvalidSessions(true);
sessionManager.setSessionValidationSchedulerEnabled(true);
Cookie cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME);
cookie.setName(“shiroCookie”);
cookie.setHttpOnly(true);
sessionManager.setSessionIdCookie(cookie);
return sessionManager;
}

4、缓存管理器 使用Ehcache实现

在这里插入图片描述

@Bean
public CacheManager getCacheShiroManager(EhCacheManagerFactoryBean ehcache) {
EhCacheManager ehCacheManager = new EhCacheManager();
ehCacheManager.setCacheManager(ehcache.getObject());
return ehCacheManager;
}

5、项目自定义的Realm

在这里插入图片描述

@Bean
public ShiroDbRealm shiroDbRealm() {
return new ShiroDbRealm();
}

6、rememberMe管理器, cipherKey生成键

在这里插入图片描述

7、记住密码Cookie

在这里插入图片描述

@Bean
public SimpleCookie rememberMeCookie() {
SimpleCookie simpleCookie = new SimpleCookie(“rememberMe”);
simpleCookie.setHttpOnly(true);
simpleCookie.setMaxAge(7 * 24 * 60 * 60);//7天
return simpleCookie;
}

8、Shiro的过滤器链

在这里插入图片描述
在这里插入图片描述

@Bean
public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
/**
* 默认的登陆访问url
/
shiroFilter.setLoginUrl("/login");
/
*
* 登陆成功后跳转的url
/
shiroFilter.setSuccessUrl("/");
/
*
* 没有权限跳转的url
*/
shiroFilter.setUnauthorizedUrl("/global/error");

    /*** 覆盖默认的user拦截器(默认拦截器解决不了ajax请求 session超时的问题,若有更好的办法请及时反馈作者)*/HashMap<String, Filter> myFilters = new HashMap<>();myFilters.put("user", new GunsUserFilter());shiroFilter.setFilters(myFilters);/*** 配置shiro拦截器链** anon  不需要认证* authc 需要认证* user  验证通过或RememberMe登录的都可以** 当应用开启了rememberMe时,用户下次访问时可以是一个user,但不会是authc,因为authc是需要重新认证的** 顺序从上到下,优先级依次降低** api开头的接口,走rest api鉴权,不走shiro鉴权**/Map<String, String> hashMap = new LinkedHashMap<>();for (String nonePermissionRe : NONE_PERMISSION_RES) {hashMap.put(nonePermissionRe, "anon");}hashMap.put("/**", "user");shiroFilter.setFilterChainDefinitionMap(hashMap);return shiroFilter;
}
9、 在方法中 注入 securityManager,进行代理控制

在这里插入图片描述

@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager securityManager) {
MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean();
bean.setStaticMethod(“org.apache.shiro.SecurityUtils.setSecurityManager”);
bean.setArguments(securityManager);
return bean;
}

10、Shiro生命周期处理器

在这里插入图片描述

@Bean
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}

11、启用shrio授权注解拦截方式,AOP式方法级权限检查

在这里插入图片描述

@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor =
new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}


http://chatgpt.dhexx.cn/article/K5ZHEOk3.shtml

相关文章

Shiro 权限管理入门之认证与授权

Shiro 权限管理什么是权限管理&#xff1f;什么是身份认证&#xff1f;什么是授权&#xff1f; Shiro 是什么?Shiro 的核心架构Shiro 中的认证认证关键对象认证流程认证的开发自定义 RealmSimpleAccountRealm开发自定义 Realm MD5 和 Salt自定义 md5 salt 的 Realm 并验证 Sh…

Shiro权限管理详解

1权限管理1.1什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理&#xff0c;权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份…

Shiro权限控制

目录 认识Shiro的整体架构&#xff0c;各组件的概念简介Shiro与Spring Security比较Shiro整体架构 Shiro认证&#xff0c;授权的过程shiro认证Shiro授权 Shiro自定义的Realm&#xff0c;FilterIniRealm配置文件JdbcRealm自定义Realmshiro加密 Shiro Session管理Shiro 缓存管理S…

Shiro权限管理框架详解

1 权限管理1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份认证和授权两部分,简称认证授权…

Shiro 权限管理

一共5个表 用户表角色表权限表用户角色中间表角色权限中间表 权限验证 用户不跟权限直接关联&#xff0c; 可以给用户多个角色&#xff0c; 每个角色都有对应的权限&#xff0c;所以给用户加一个角色&#xff0c;就相当于&#xff0c;给用户赋了对应的权限。一个用户可以有多…

Shiro: 权限管理

一、权限管理 1、什么是权限管理 权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问且只能访问自己被授权的资源。   权限管理包括用户身份认证和授权两部分&#xff0c;简称认证授权。对于需要…

【权限管理框架】一文看懂Shiro权限管理框架!

文章目录 1.JavaWeb中的权限控制2.权限框架核心知识ACL和RBAC2.1.ACL和RBAC简介2.2主流权限框架介绍 3.Shiro架构和基本概念3.1.Shiro的4大核心模块3.2.Shiro权限控制运行流程 4.Shiro简单API案例4.1.项目搭建所需依赖4.2.Shiro认证简单实操4.3.Shiro授权简单实操 5.安全数据来…

【端口扫描工具】nmap核心使用方法

目录 nmap的基础使用&#xff1a; 1.1、常用命令参数&#xff1a; 命令格式&#xff1a; 主机发现&#xff1a; 扫描 扫描速度 扫描端口 1.2、基本扫描 1.3、自定义端口扫描 1.4、Ping扫描 1.5、路由追踪 1.6、扫描网段,C段 1.7、操作系统类型的探测 1.8、nmap万能…

【安全工具】Nmap基本使用方法

Nmap工具介绍 Nmap是一款开放源代码的网络探测和安全审核工具&#xff0c;它被设计用来快速扫描大型网络、包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹、WAF识别及常见安全漏洞。 它的图形化界面是 Zenmap、分布式框架为 Dnmap Nmap功能 主机探测&#xf…

nmap工具使用方法

nmap工具使用方法 简介 Nmap&#xff08;网络映射器&#xff09;是一个用于网络探索和安全审计的开源工具 常用扫描端口命令 <nmap -sV 192.168.204.64> -sV&#xff1a;探测端口服务版本<nmap -T4 -A -v 192.168.204.64> -T4&#xff1a; 指定扫描过程使用的时…

nmap使用方法--方便自己查

在侦查期间&#xff0c;扫描一直是信息收集的初始阶段。 什么是侦查 侦查是尽可能多收集关于目标网络的信息。从黑客的角度来看&#xff0c;信息收集对于一次攻击非常有用&#xff0c;所以为了封锁恶意的企图&#xff0c;渗透测试者通常尽力查找这些信息&#xff0c;发现后修复…

端口扫描工具Nmap使用方法 day02

nmap是一个网络端口扫描软件&#xff0c;用来扫描网上电脑开放的网络连接端口&#xff0c;确定哪些服务运行在哪些端口&#xff0c;并且推断计算机运行哪个os。它是网络管理员必用的软件之一&#xff0c;渗透测试人员也可以用它评估网络系统安全。下面介绍kali linux中nmap的用…

nmap详细使用教程

目录 nmap简介 nmap常用命令 实例演示-发现主机 实例演示-端口发现 实例演示-获得服务版本详细信息 实例演示-确定主机操作系统 nmap简介 nmap是一款非常强大的主机发现和端口扫描工具&#xff0c;而且nmap运用自带的脚本&#xff0c;还能完成漏洞检测&#xff0c;同时支…

nmap常见使用方法

基础使用&#xff1a; 1.nmap ip 探测目标ip1-10000范围内所有开放端口 比如&#xff1a;扫描192.168.91.1 可以看见&#xff0c;已经扫描出目标IP对应的一些信息了 2.nmap -vv ip 简单扫描&#xff0c;输出详细结果&#xff08;一般没什么用&#xff09; nmap -p port ip …

Nmap 基本使用方法

一、下载工具包 进入官网下载安装包Download the Free Nmap Security Scanner for Linux/Mac/Windows 二、安装zenmap 工具 点击“下一步”安装完成。Zenmap 界面如下 三、Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp。 Nmap可以完成以下任务…

nmap 使用方法详细介绍

nmap的使用 前言nmap 作用Nmap使用教程nmap的基本输入&#xff1a;扫描参数&#xff1a;端口扫描&#xff1a;端口状态扫描&#xff1a;UDP扫描协议扫描 总结Nmap的基础知识Nmap的扫描技术Nmap的OS检测&#xff08;O&#xff09;Nmap的操作系统指纹识别技术&#xff1a; 前言 …

Nmap使用方法及常用命令学习

本文为学习笔记&#xff0c;仅限学习交流。不得利用、从事危害国家或人民安全、荣誉和利益等活动。 请参阅《中华人民共和国网络安全法》 7-30作业 —Nmap 练习 Nmap 是Network Mapper&#xff0c;中文为“网络映射器”。 Nmap 是一款开源的网络探测和安全审核的工具&#xff…

Nmap使用方法简析

NMAP 引子&#xff1a; Nmap&#xff0c; 是 Network Mapper 的缩写&#xff0c;由 Gordon Lyon 维护(更多关于 Mr. Lyon 的信息在这里: http://insecure.org/fyodor/) &#xff0c;并被世界各地许多的安全专业人员使用。 这个工具在 Linux 和 Windows 下都能使用&#xff0…

nmap使用方法详解

Nmap详解 Nmap&#xff08;网络映射器&#xff09;是一款开放源代码的网络探测和安全审核工具&#xff0c;它被设计用来快速扫描大型网络&#xff0c;包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。 Nmap的特点&#xff1a; - 主机…

Nmap的使用方法总结

文章目录 Nmap的使用方法总结一&#xff1a;各种参数的使用1&#xff1a;ping扫描 —— nmap < 要扫描的目标ip地址>2&#xff1a;TCP SYN Ping扫描3&#xff1a;-PA TCP ACK Ping扫描4&#xff1a;半开扫描5&#xff1a;自定义端口扫描 nmap -P&#xff08;扫描范围&…