SpringSecurity跨域问题,配置了相关配置还是报错

2023-11-04

跨域问题基础配置

跨域的本质是响应头问题,只要加上下述的响应头即可解决跨域。(下述1、配置跨域中的代码是通过aop来实现该功能的一种方式)
在这里插入图片描述

1、配置跨域

正常的跨域配置

@Component
public class CORSInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Headers", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET, PUT, DELETE, POST, OPTIONS");
        response.setCharacterEncoding("utf8");
        response.setContentType("text/json;charset = UTF-8");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }
}

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private CORSInterceptor corsInterceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(corsInterceptor).addPathPatterns("/**");
    }
}
//路由的话直接使用的@CrossOrigin注解
@CrossOrigin
@RestController
@RequestMapping("/operationLog2D")
public class OperationLogController {


}

2、SpringSecurity配置

关键是.and().cors()

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()//可以自定义哪些被保护哪些不被保护
                .anyRequest().permitAll()//所有请求都可以直接通过
                .and().cors()
                .and().csrf().disable()
				.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }

我遇到的问题

完成了上面的步骤之后还是有跨域的报错。。。。
仔细检查了检查发现应该是UserDetails的问题,就是我之前准备用SpringSecurity自带的那个认证做登录授权,但是由于时间有限,在整合jwt那个部分没什么时间研究就放弃网上的方法了,之后的认证授权没有用到UserDetailsService这个继承了UserDetails的实现类(按着之前教程的说法,springsecurity自带的认证会现在配置文件.yml或者SecurityConfig 中找,如果没找到的话就会去找UserDetailsService或者继承了这个类的自定义类,在这个实现类中获取表单提交的账号密码完成认证操作 )。
然后我就试了试把和这个相关的地方注释掉,终于不报跨域的错误了。

被注释的代码如下

注释了所有

//package com.operative.user.service;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.operative.base.utils.WrapperUtil;
//import com.operative.role.entity.Role;
//import com.operative.role.mapper.RoleMapper;
//import com.operative.user.mapper.UserMapper;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.userdetails.User;
//import org.springframework.security.core.userdetails.UserDetails;
//import org.springframework.security.core.userdetails.UserDetailsService;
//import org.springframework.security.core.userdetails.UsernameNotFoundException;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.List;
//@Service("userDetailsService")
//public class MyUserDetailsService implements UserDetailsService {
//    @Autowired
//    private UserMapper userMapper;
//    @Autowired
//    private RoleMapper roleMapper;
//
//    @Override
//    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//        final com.operative.user.entity.User user = userMapper.selectOne(WrapperUtil.getQueryWrapper("username", username));
//        if (user==null){
//            throw new UsernameNotFoundException("用户名不存在");
//        }
//        //获取权限
//        final List<GrantedAuthority> list = getAuthorities(user);
//        return new User(user.getUsername(),user.getPassword(),list);
//    }
//
//
//     /**
//     * 获取登录用户权限
//     * @return List<GrantedAuthority>
//     */
//    public List<GrantedAuthority> getAuthorities(com.operative.user.entity.User user) {
//
//        final List<GrantedAuthority> list = new ArrayList<>();
//
//        final String roleIds = user.getRoleIds();//获取所有角色id数组
//        final List<Integer> roleIdList = JSON.parseArray(roleIds, Integer.class);
//        for (Integer roleId : roleIdList) {//循环角色id
//            final Role role = roleMapper.selectOne(WrapperUtil.getQueryWrapper("id", roleId));
//            final String permissionIds = role.getPermissionIds();
//            final List<Integer> perIdList = JSON.parseArray(permissionIds, Integer.class);
//            for (Integer perId : perIdList) {//循环角色的权限id
//
//                final SimpleGrantedAuthority authId = new SimpleGrantedAuthority(perId.toString());
//                if (!list.contains(authId)) {//去重
//                    list.add(authId);
//                }
//            }
//        }
//        System.out.println("获取登录用户权限");
//        for (GrantedAuthority grantedAuthority : list) {
//            System.out.println("_______+++++" + grantedAuthority);
//        }
//        return list;
//    }
//
//}

注释了所有下面两个部分

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//    @Autowired
//    private UserDetailsService userDetailsService;//通过service后面的名字注入进来


//    /**
//     * 设置自己定义的登录实现类
//     * @param auth
//     * @throws Exception
//     */
//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());//这里把通过Bean创建的对象向注入进去
//    }
}

有时间一定要再仔细看看,看看是什么原因

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringSecurity跨域问题,配置了相关配置还是报错 的相关文章

  • Java 线程何时达到“死亡”状态

    在 Java 中 Die 是线程的状态之一 什么原因导致线程进入这种状态 来自线程API http java sun com javase 6 docs api java lang Thread html 这是一个完整的列表 如果 run
  • 将项目导出为 jar 时删除 Jacoco 库依赖项

    我之前已经在我的项目中实现了 jacoco 实现就像描述的那样here https medium com android2ee playing with gradle 3 and some few code coverage on andr
  • 使用 Smack 库解析 XMPP 的 EventElement

    任何人都可以帮助向我展示如何解析此事件 pub 元素并获取以下数据包的消息对象 也许我的关键字 搜索词谷歌搜索不正确 但我在寻找有关此问题的文档或教程时找不到任何有用的东西 我读过一些有关 PacketParserUtils 和 XmlPu
  • 如何在netbeans(Java Swing)中查看同一JFrame中包含许多子jPanel的另一个jPanel

    我想通过按钮事件操作显示另一个 jPanel 例如 private void jButtonMouseClicked MouseEvent e getContentPane removeAll update getGraphics code
  • 仅保留字母字符

    我应该在java中遵循什么方法来生成 WordWord from Word Word 1234 您可以使用String replaceAll regex replacement http docs oracle com javase 6 d
  • 为什么 show log 和 svn update 的版本号不同?

    当我对一个 svn 文件夹进行更新时 它会显示最新版本 更新被视为Completed At revision 116 但是当我确实显示该文件夹的日志时 它显示最新的修订号为100在历史上 我的问题是为什么两个版本号不同步 有关信息 当我执行
  • 来自 Java 的 Apache FOP 与 XSLT 2.0...?

    我在 Apache FOP 1 0 的嵌入式使用中使用 XSLT 2 0 的某些功能时遇到问题 特别是在使用 current group 时出现异常 我看到 FOP 正在使用 xalan 2 6 它引发了异常 我尝试排除 xalan 2 6
  • 改进 JUNG 图的渲染

    我正在使用 jung 来直观地显示大型数据集 数千个节点 但是当我放大或缩小或移动节点时 系统会变得非常滞后 有没有办法改善 JUNG 中图形的渲染 我用来改进图形渲染的方法是过滤图形的边缘 每次您尝试移动图形时 框架都会进行大量计算来重新
  • 如何合并两个Jar文件

    是否可以组合两个 jar 文件 以便在小程序标签中我可以简单地执行类似的操作 archive jarjar jar jar1 jar archive jarjar jar jar2 jar instead of archive jar1 j
  • 如何与 SecretKeySpec 一样加密 ruby​​ 中的数据?

    我正在尝试使用带有 AES 算法的 Cipher 来加密 ruby 中的字符串 我有用Java编写的示例 我从这个例子中得到了帮助 并用 Java 编写了代码 但无法获得与 JAVA 中相同的输出 下面是用java编写的代码 import
  • 使用 MVP 模式

    我有一个用 MVC 模式制作的 Web 应用程序 但是我正在尝试适应 MVP 模式 我正在使用 GWTPlatform 库 我已经将其中的一些代码迁移到了Presenter和View 然而 我还没有看到任何全面的材料来解释如何实际处理Mod
  • 如何在 JPasswordField 中启用剪切、复制?

    我注意到我无法剪切和复制JPasswordField 现在如何将密码的选定部分复制 剪切到剪贴板 有什么方法可以做到这一点吗 简单 用这个方法 JPasswordField jt new JPasswordField 20 Put clie
  • Spring,如何使用 websocket 向连接的客户端广播消息?

    我正在尝试在我的应用程序中使用 websockets 我已经遵循了这个教程 http spring io guides gs messaging stomp websocket http spring io guides gs messag
  • 不支持的主要.次要版本 49.0

    每当我登录我的应用程序时 我都会收到以下异常 javax servlet ServletException com sun org apache xalan internal xsltc trax TransformerFactoryImp
  • 使用泛型类型实例化抽象类的对象

    我正在创建一个具有泛型类型的函数 并且该泛型类型是我需要实例化的抽象类型 这段代码会更清楚地解释它 public
  • 注释非法 Unicode 序列

    我曾经在一个处理 unicode 处理的 Java 应用程序上工作 像往常一样 我首先编写一些代码并测试它 然后注释掉工作代码并添加一些新行 这个过程一直持续到我找到解决方案 我遇到的确切问题是注释掉非法的 Unicode 字符串 有些 u
  • 位图 getWidth 返回错误值

    我的 android 应用程序可绘制文件夹中有一张 jpg 图像 分辨率为 1000x600 我像这样将该图像加载到位图 Bitmap bitMap BitmapFactory decodeResource getResources R d
  • 让 Jsoup 支持通过 JavaScript 动态生成 html

    现在我正在开发一个网络爬虫 这个应该解析一些特定的站点并将输出输出到 xml 文件中 到目前为止 没有问题 Crawler 可以工作 您可以通过 cfg 文件快速自定义它 我使用 Jsoup 来解析 HTML 内容 我刚刚添加了几个站点 发
  • Morphia - 未在 dbObj 中找到定义的类

    我有一个相当有趣的问题 当尝试从 Mongo 实例加载模型时 Morphia 会抛出以下错误 22 17 13 WARN Class not found defined in dbObj java lang ClassNotFoundExc
  • JBoss Weld + java.lang.OutOfMemoryError:永久代空间

    我刚刚切换到 Weld 以利用 CDI JSF 2 Beans 对话范围 这是我的 Maven 依赖项

随机推荐

  • Docker常用命令超细介绍,Java校招面试指南

    2 3 docker pull 前面我们介绍了 search命令可以从docker hub上搜索到相关的镜像 接下来看看我们通过docker pull 来下载镜像 docker pull 镜像名称 TAG 通过镜像加速下载还是比较快的 2
  • 解决下载github-production-release-asset-2e65be.s3.amazonaws.com上release文件慢的问题

    1 问题 去github下载BloomRPC工具进行测试grpc 果然一如既往的慢 想到把github转到码云进行下载 奈何我要下载的是release的文件 有两个代下地址 GitHub代下载服务 永久免费 这个最近貌似挂了 试试下面那个
  • java 之 反射 (结合Class理解)

    反射机制使静态语言java变为准动态语言 Reflection 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性及方法 反射方式 实例化对象 getClass 方法 得到完整的
  • Keil MDK环境下FreeModebus移植踩坑记录

    Keil MDK环境下FreeModebus移植踩坑记录 文章目录 Keil MDK环境下FreeModebus移植踩坑记录 armcc arm compiler v5 环境 实验一 实验二 armclang arm compiler v6
  • NFTScan 与 Atem Network 在 NFT 数据领域达成战略合作

    近日 Web3 基础设施 NFTScan 浏览器与 Atem Network 协议达成战略合作伙伴关系 双方已在 NFT 数据领域展开深度了合作 Atem Network 是一个 Web3 社交平台 用户可以通过 NFT 创建 连接和拥有自
  • 蓝桥杯-刷题统计

    问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛 他计划周一至周五每天 做 aa 道题目 周六和周日每天做 bb 道题目 请你帮小明计算 按照计划他将在 第几天实现做题数大于等于 nn 题 输入格式 输入一行包含三个整数 a ba b
  • 联想笔记本BIOS设置中文详解

    对于很多新装系统的小伙伴们 可能很多都不是太懂BIOS中都是干什么用的 小编这里给大家详细介绍一下 联想笔记本的主板BIOS设置跟别的笔记本或许有些不同但大体相差不多 和大家分享一下 BIOS介绍 中文解释就是 基本输入输出系统 其实它是固
  • python关于初始化和实例化之----log日志打印两次的问题综述

    我在写appium desktop自动化框架的时候 我发现在我运行demo的时候 日志会运行两次 我查了一堆资料也没有发现我错在哪里 一 开始我以为是 init 的问题 我检查了 init 方法 发现他们属于同一对象 没有多余的对象 二 然
  • 5g信号频率是多少赫兹_我家WiFi也有“5G”,这是5G信号吗?

    大家都知道5G吧 5G是最近很火热的名词 大家都知道它和手机有关系 有些小伙伴在用手机和电脑连WiFi的时候 也能看到一些WiFi名字后面跟着一个 5G 这个 5G 是平时说的那个5G吗 答案是 否 5G是 5th generation m
  • 服务器拷贝文件工具,windows命令行下也有好工具(四)-拷贝文件到多台服务器...

    做系统管理员 经常需要从本机向多台服务器拷贝文件 或者从多台服务器向本机拷贝文件 如果使用windows界面 要一次次的点击鼠标进行操作 太麻烦了 在linux下可以使用scp命令 用一个脚本就可以解决 当然每次都要输入口令 也可以命令行带
  • [Python]网络爬虫 urllib爬虫案例

    urllib爬虫案例 爬取公众号文章中的图片 第1步 确定公众号文章的地址 以微信公众号 Python小屋 里的一篇文章为例 文章标题为 报告PPT 163页 基于Python语言的课程群建设探讨与实践 地址为 https mp weixi
  • Hadoop Mapreduce编程之Reduce端join实现

    1 数据准备 movies dat 数据格式 movieid moviename movietype ratings dat 数据格式 userid movieid rating timestamp 2 Mapper端开发 1 定义必要的变
  • virtualbox 清理磁盘占用空间

    目录 1 虚拟系统整理 2 压缩磁盘 1 虚拟系统整理 Windows虚拟机 下载sdelete工具 执行下面的命令 sdelete z c Linux虚拟机执行下面的命令 sudo dd if dev zero of EMPTY bs 1
  • 软件设计师考试内容复习(二)

    一 层次化存储结构 二 Cache Cache的功能 提高CPU数据输入输出的速率 突破CPU与存储系统间数据传输带宽限制 在计算机存储系统体系中 Cache是访问速度最快的层次 使用Cache改善系统性能的依据是程序的局部性原理 如果以
  • docker 镜像容器导入导出、查看日志、拷贝文件命令

    1 本地文件拷贝到docker 容器中 参考 docker cp root pcl pcl 1 8 1 tar gz 7ff95b333e12 docker cp root lib64 a 7ff95b333e12 2 docker从容器里
  • 蓝桥杯决赛真题——国王的遗产

    标题 国王的遗产 X国是个小国 国王K有6个儿子 在临终前 K国王立下遗嘱 国王的一批牛作为遗产要分给他的6个儿子 其中 大儿子分1 4 二儿子1 5 三儿子1 6 直到小儿子分1 9 牛是活的 不能把一头牛切开分 最后还剩下11头牛 分给
  • 5种开源虚拟化技术推荐

    zz http www oschina net news 14907 5 opensource virtualization soft 论坛 http bbs chinaunix net forum 283 1 html 虚拟化现在已经成为
  • 力扣977-有序数组的平方

    有序数组的平方链接 给你一个按 非递减顺序 排序的整数数组 nums 返回 每个数字的平方 组成的新数组 要求也按 非递减顺序 排序 示例 1 输入 nums 4 1 0 3 10 输出 0 1 9 16 100 解释 平方后 数组变为 1
  • python开发工程师考试_Python开发工程师丨网易游戏

    本期导读 计科校友 榜样说 vol 15 方向很重要 实践出真知 蔡钰莹 Python开发工程师丨网易游戏 软件工程师 广州合明软件科技有限公司 前端开发工程师 广东中科慈航信息科技有限公司 网易游戏 公司简历 网易 NASDAQ NTES
  • SpringSecurity跨域问题,配置了相关配置还是报错

    跨域问题基础配置 跨域的本质是响应头问题 只要加上下述的响应头即可解决跨域 下述1 配置跨域中的代码是通过aop来实现该功能的一种方式 1 配置跨域 正常的跨域配置 Component public class CORSIntercepto