Apache Shiro破坏了我Spring Boot RestAPI的CORS配置。
创始人
2024-09-04 19:30:32
0

在使用Apache Shiro保护Spring Boot RestAPI时,可能会遇到CORS(跨域资源共享)配置问题。下面是一个解决方法的示例,包含代码示例:

  1. 首先,确保你已经在Spring Boot项目中添加了相关的依赖,比如spring-boot-starter-web和shiro-spring-boot-starter。

  2. 在Spring Boot的配置文件(application.properties或application.yml)中添加CORS配置,允许来自特定域名(比如http://localhost:3000)的请求。示例配置如下:

# application.properties
# 允许所有的HTTP方法
shiro.filter.cors.allowedMethods = GET, POST, PUT, DELETE, OPTIONS
# 允许来自http://localhost:3000的请求
shiro.filter.cors.allowedOrigins = http://localhost:3000
# 允许带凭证(如cookies)
shiro.filter.cors.allowCredentials = true
# application.yml
shiro:
  filter:
    cors:
      allowedMethods: GET, POST, PUT, DELETE, OPTIONS
      allowedOrigins: http://localhost:3000
      allowCredentials: true
  1. 创建一个自定义的ShiroFilterFactoryBean,并设置CORS过滤器。示例代码如下:
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class ShiroConfig {

    @Bean
    public ShiroFilterFactoryBean shiroFilterFactoryBean() {
        // 创建ShiroFilterFactoryBean
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        // 设置Shiro的安全管理器
        shiroFilterFactoryBean.setSecurityManager(securityManager());
        // 设置CORS过滤器
        shiroFilterFactoryBean.getFilters().put("cors", corsFilter());
        // ...
        // 设置其他的过滤器规则

        return shiroFilterFactoryBean;
    }

    @Bean
    public CorsFilter corsFilter() {
        // 创建CorsFilter
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        // 允许所有的HTTP方法
        config.addAllowedMethod("*");
        // 允许来自http://localhost:3000的请求
        config.addAllowedOrigin("http://localhost:3000");
        // 允许带凭证(如cookies)
        config.setAllowCredentials(true);
        source.registerCorsConfiguration("/**", config);

        return new CorsFilter(source);
    }

    // ...
    // 设置其他的Shiro配置,比如Realm、Cache、Session等
}

通过以上步骤,你可以将Shiro和CORS配置结合起来,保护Spring Boot RestAPI并允许特定域名的跨域请求。请根据实际情况进行相应的修改和调整。

相关内容

热门资讯

2026版方法!竞技联盟辅助插... 2026版方法!竞技联盟辅助插件,德扑之星透视辅助软件激活码,果然是有挂(有挂头条)1、任何德扑之星...
热点推荐!八闽福建辅助,开心泉... 热点推荐!八闽福建辅助,开心泉州小程序辅助器,详细攻略(真实有挂)1、超多福利:超高返利,海量正版游...
目前!wepokerplus辅... 目前!wepokerplus辅助,德普之星透视辅助软件是真的吗,原来确实有挂(有挂猫腻)在进入德普之...
技术分享!闲来辅助神器下载,湖... 技术分享!闲来辅助神器下载,湖北卡五星如啊你就按,详细挂(有挂教学)1、打开软件启动之后找到中间准星...
黑科技辅助挂!pokemmo内... 您好,德扑之心免费透视这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩...
发现一款!闲来辅助软件怎么样,... 发现一款!闲来辅助软件怎么样,小唐家乐园辅助,详细攻略(有挂透明挂)1、闲来辅助软件怎么样脚本辅助下...
最终!hhpoker有没有外挂... 最终!hhpoker有没有外挂,德普之星透视辅助软件是真的吗,竟然真的有挂(有人有挂)1、德普之星透...
指导大家!微信小程序全能修改器... 指导大家!微信小程序全能修改器,潮汕激k辅助器,详细神器(有挂分享)1、下载好微信小程序全能修改器脚...
教学辅助挂!wpk辅助是什么,... 教学辅助挂!wpk辅助是什么,德普之星私人局辅助免费,其实真的有挂(有挂详情)1、金币登录送、破产送...
我来教教大家!闲聚鱼虾蟹软件脚... 我来教教大家!闲聚鱼虾蟹软件脚本,小程序河北微乐脚本,详细脚本(有挂细节)小程序河北微乐脚本能透视中...