#服务配置
server:port: 9002
#spring配置
spring:#1.应用配置application:name: ihrm-system #指定服务名#2.数据库连接池datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ihrm?useUnicode=true&characterEncoding=utf8username: rootpassword: 111111#3.JPAjpa:database: MySQLshow-sql: trueopen-in-view: trueredis:host: localhostport: 9999password: 123456
jwt:config:key: saas-ihrmttl: 3600000
package com.learn.system;import com.learn.common.shiro.realm.IhrmRealm;
import com.learn.common.shiro.session.CustomSessionManager;
import com.learn.system.shiro.realm.UserRealm;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.crazycake.shiro.RedisCacheManager;
import org.crazycake.shiro.RedisManager;
import org.crazycake.shiro.RedisSessionDAO;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.LinkedHashMap;
import java.util.Map;@Configuration
public class ShiroConfiguration {//1.创建realm@Beanpublic IhrmRealm getRealm() {return new UserRealm();}//2.创建安全管理器@Beanpublic SecurityManager getSecurityManager(IhrmRealm realm) {DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();securityManager.setRealm(realm);//将自定义的会话管理器注册到安全管理器中securityManager.setSessionManager(sessionManager());//将自定义的redis缓存管理器注册到安全管理器中securityManager.setCacheManager(cacheManager());return securityManager;}//3.配置shiro的过滤器工厂/*** 再web程序中,shiro进行权限控制全部是通过一组过滤器集合进行控制**/@Beanpublic ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {//1.创建过滤器工厂ShiroFilterFactoryBean filterFactory = new ShiroFilterFactoryBean();//2.设置安全管理器filterFactory.setSecurityManager(securityManager);//3.通用配置(跳转登录页面,未授权跳转的页面)filterFactory.setLoginUrl("/autherror?code=1");//跳转url地址filterFactory.setUnauthorizedUrl("/autherror?code=2");//未授权的url//4.设置过滤器集合Map<String,String> filterMap = new LinkedHashMap<>();//anon -- 匿名访问filterMap.put("/sys/login","anon");filterMap.put("/autherror","anon");//注册//authc -- 认证之后访问(登录)filterMap.put("/**","authc");//perms -- 具有某中权限 (使用注解配置授权)filterFactory.setFilterChainDefinitionMap(filterMap);return filterFactory;}@Value("${spring.redis.host}")private String host;@Value("${spring.redis.port}")private int port;@Value("${spring.redis.password}")private String password;/*** 1.redis的控制器,操作redis*/public RedisManager redisManager() {RedisManager redisManager = new RedisManager();redisManager.setHost(host);redisManager.setPort(port);redisManager.setPassword(password);return redisManager;}/*** 2.sessionDao*/public RedisSessionDAO redisSessionDAO() {RedisSessionDAO sessionDAO = new RedisSessionDAO();sessionDAO.setRedisManager(redisManager());return sessionDAO;}/*** 3.会话管理器*/public DefaultWebSessionManager sessionManager() {CustomSessionManager sessionManager = new CustomSessionManager();sessionManager.setSessionDAO(redisSessionDAO());//禁用cookiesessionManager.setSessionIdCookieEnabled(false);//禁用url重写   url;jsessionid=idsessionManager.setSessionIdUrlRewritingEnabled(false);return sessionManager;}/*** 4.缓存管理器*/public RedisCacheManager cacheManager() {RedisCacheManager redisCacheManager = new RedisCacheManager();redisCacheManager.setRedisManager(redisManager());return redisCacheManager;}//开启对shior注解的支持@Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();advisor.setSecurityManager(securityManager);return advisor;}
}
package com.learn.common.controller;import com.learn.common.entity.Result;
import com.learn.common.entity.ResultCode;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@CrossOrigin
public class ErrorController {//公共错误跳转@RequestMapping(value="autherror")public Result autherror(int code) {return code ==1?new Result(ResultCode.UNAUTHENTICATED):new Result(ResultCode.UNAUTHORISE);}}

SasSHRM中基于shiro的认证授权:系统微服务配置shiro相关推荐

  1. Spring Security OAuth2.0_实现分布式认证授权_微服务解析令牌并鉴权_Spring Security OAuth2.0认证授权---springcloud工作笔记154

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们接着去看,我们需要其他的微服务就解析令牌,并且进行根据权限判断能不能来访问我们的某个方法 ...

  2. 基于云平台的ATS系统微服务架构方案研究

    当前,城市轨道交通行业云平台化已经进入了大规模的应用阶段,云平台有着低成本.高可用.高扩展等优势,能够更好地助力城市轨道交通行业实现服务业务创新[1-2].列车自动监控系统(Automatic Tra ...

  3. 3万字《SpringBoot微服务开发——Shiro(安全)》

    SpringBoot微服务开发--Shiro(安全) 文章目录 SpringBoot微服务开发--Shiro(安全) Shiro(安全) 1.Shiro简介 2.Shiro有哪些功能? 3.Shiro ...

  4. 如何实现用户认证授权系统

    实现用户认证授权系统的方法如下: 首先,统一用户管理系统在设计时就要能建立一个能适应各种系统权限管理要求的权限模型. 对于己建立的老系统,各系统将自己的用户角色管理,角色一权限管理等部分抽离出来,统一 ...

  5. 【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置

    [NET CORE微服务一条龙应用]第三章 认证授权与动态权限配置 介绍 系列目录:[NET CORE微服务一条龙应用]开始篇与目录 在微服务的应用中,统一的认证授权是必不可少的组件,本文将介绍微服务 ...

  6. 自动匹配未认领订单编号_海量订单系统微服务开发:使用MongoDB支持海量数据...

    海量订单系统微服务开发 订单系统是电商平台中一个非常重要的组成部分,而且它还是一个具有巨大流量和高并发访问的系统,与订单相关的服务涉及库存.支付.物流等.在设计订单系统时,我们选择使用支持海量数据的N ...

  7. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  8. 基于Spring Cloud及K8S构建微服务应用

    摘要 广发证券蔡波斯先生通过三个大方向来为我们分享基于Spring Cloud及K8S构建微服务应用. 内容来源:2017年6月10日,广发证券蔡波斯在"Spring Cloud中国社区技术 ...

  9. 客服系统微服务架构的演化

    客服系统微服务架构的演化 微服务要求 服务协作 服务治理 服务治理 1 怀疑第三方 坚持一条信念:"所有第三方服务都不可靠",不管第三方什么天花乱坠的承诺.基于这样的信念,我们需要 ...

最新文章

  1. vc2005编译ffmpeg以及ffplay
  2. [译]yield关键字都做了什么?
  3. 520,花一夜给女神写走迷宫游戏
  4. python建立列表_python创建列表和向列表添加元素的实现方法
  5. Petalinux 2018.2 for Xilinx
  6. python 创建json_使用Django和Python创建Json response的方法
  7. 动画---图形图像与动画(三)Animation效果的XML实现
  8. linux postgresql默认安装目录,postgresql - 三种安装方式(示例代码)
  9. 提示tun虚拟网卡没有安装_Win10家庭版通过Hyper-V安装Centos7+Python3.7过程总结
  10. autojs 如何获取控件的desc_owchart教程三:如何添加成交量?
  11. CSS border-style属性
  12. Perl导入代码文件
  13. 数据挖掘作业FCM算法
  14. 区块链开发入门教程【加精】
  15. 高通骁龙845与骁龙710处理器参数对比分析
  16. day06 Elasticsearch搜索引擎2
  17. window10桌面管理器占内存太高解决办法
  18. 用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?
  19. centos7服务器之基本命令
  20. python全栈是什么

热门文章

  1. Bzoj4212--神牛养成计划
  2. 居中弹出一个层,打开一个文件。
  3. 建议CSDN增加谈恋爱专区
  4. JDK自带VM分析工具jps,jstat,jmap,jconsole
  5. webpack与babel的深奥,渣渣的我只能做个小笔记(持续更新)
  6. Git手册 - 分支远程同步
  7. CSS之div和span标签
  8. mysql中binlog_format模式与配置详解
  9. Druid 在spring中的配置
  10. NSubstitute完全手册(八)替换返回值