spring-cloud中使用shiro权限控制

在spring-cloud中使用shiro权限控制,分为网关权限控制和后台逻辑控制。

注意:要在后台做权限认证,必须先在网关做身份认证,将身份认证信息使用redis跨域到后台。应工作原因,本教程,后台部分的跨域问题还未弄,详情参考:https://blog.csdn.net/kunzai6/article/details/80527130

网关权限控制:

一.在网关中主要做用户登录身份认证操作。

1.在pom.xml文件中添加:

<!--  页面拦截时,需要添加的依赖类 ,一下两个类,是访问页面时必须添加的-->

<dependency>
   <groupId>org.apache.shiro</groupId>
   <artifactId>shiro-spring</artifactId>
   <version>1.4.0</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-redis</artifactId>
   <version>1.3.2.RELEASE</version>
</dependency>
<dependency>
   <groupId>org.springframework.session</groupId>
   <artifactId>spring-session-data-redis</artifactId>
</dependency>

<dependency>
   <groupId>org.crazycake</groupId>
   <artifactId>shiro-redis</artifactId>
   <version>2.4.2.1-RELEASE</version>
</dependency>

 

2.在application.yml中添加

spring:
  profiles:
    active:

    - shiro

3.application-shiro.properties文件中添加如下:

shiro.filter=/css/**,/js/**,/favicon.ico
shiro.logout=/logout
shiro.authc=/**
shiro.loginUrl=/login
shiro.sucessUrl=/index

shiro.errorUrl=/403

4.配置文件ShiroConfig和MyShiroRealm

ShiroConfig内容如下:

@Configuration
public class ShiroConfig {
/** 不需要过滤的文件地址,以逗号(,)分隔 ***/
@Value("${shiro.filter}")
private String strFilter;
/** 配置退出 过滤器 **/
@Value("${shiro.logout}")
private String strLogout;
/** authc:所有url都必须认证通过才可以访问 **/
@Value("${shiro.authc}")
private String strAuthc;
/** 登录地址 **/
@Value("${shiro.loginUrl}")
private String strLoginUrl;
/** 成功后跳转地址 **/
@Value("${shiro.sucessUrl}")
private String strSuccessUrl;
/** 错误地址 **/
@Value("${shiro.errorUrl}")
private String strErrorUrl;

/**
* ShiroFilterFactoryBean 处理拦截资源文件问题。
* 注意:单独一个ShiroFilterFactoryBean配置是或报错的,以为在
* 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager
*
* Filter Chain定义说明 1、一个URL可以配置多个Filter,使用逗号分隔 2、当设置多个过滤器时,全部验证通过,才视为通过
* 3、部分过滤器可指定参数,如perms,roles
*
*/
@Bean
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 必须设置 SecurityManager
shiroFilterFactoryBean.setSecurityManager(securityManager);
// 拦截器.
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
// 配置不会被拦截的链接 顺序判断
String[] arrayFilter = strFilter.split(",");
Map<String, String> map = new Has

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunzai6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值