Spring Security——09,解决跨域

解决跨域

    • 一、SpringBoot配置
    • 二、配置SpringSecurity
    • 三、修改端口
    • 四、修改vue项目
      • 4.1 拿到token
      • 4.2 前端存储token
      • 4.3 前端请求头携带token
    • 五、测试
      • 5.1 认证测试
      • 5.2 授权测试
    • 一键三连有没有捏~~

浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨

域的HTTP请求,默认情况下是被禁止的。 同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。

前后端分离项目,前端项目和后端项目一般都不是同源的,所以肯定会存在跨域请求的问题。

所以我们就要处理一下,让前端能进行跨域请求。

一、SpringBoot配置

配置运行跨域请求

在这里插入图片描述

二、配置SpringSecurity

②开启SpringSecurity的跨域访问

由于我们的资源都会收到SpringSecurity的保护,所以想要跨域访问还要让SpringSecurity运行跨域访问。

在这里插入图片描述

三、修改端口

在这里插入图片描述

四、修改vue项目

vue项目:

阿里云盘:
文件太多了,百度网盘传不上,用阿里云盘,嗯。2万多个文件
https://www.alipan.com/t/la1A8NRdoGJjipuJwrZU

用postman是肯定不存在跨域问题的。因为它不是浏览器,所以我们要找一个前端的项目,就随便找了一个vue工程。修改一下vue项目。

4.1 拿到token

创建一个登录页面

在这里插入图片描述代码如下:

<template>
    <el-form style="width: 20%" :model="ruleForm" ref="ruleForm" label-width="100px" class="demo-ruleForm">

        <el-form-item label="账号" prop="userName">
            <el-input v-model="ruleForm.userName"></el-input>
        </el-form-item>

        <el-form-item label="密码" prop="password">
            <el-input v-model="ruleForm.password"></el-input>
        </el-form-item>

        <el-form-item>
            <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
        </el-form-item>

    </el-form>
</template>

<script>
    export default {
        data() {
            return {
                ruleForm: {
                    userName: '',
                    password: ''
                }
            };
        },
        methods: {

            //这个是提交方法
            submitForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        axios.post('http://localhost:8888/user/login',this.ruleForm).then(res=>{

                            console.log(res.data.data.token);

                            if(res.data.code == '200'){
                                this.$alert(this.ruleForm.userName+'账号登录成功!', '消息', {
                                    confirmButtonText: '确定',
                                })
                            }

                        })

                    } else {
                        return false;
                    }
                });
            }

        }
    }
</script>

<style scoped>

</style>

路由的配置就直接略过了,不是重点。。。。。

运行前端vue项目:

在这里插入图片描述
然后测试一下,登录成功,解决跨域请求,拿到token

在这里插入图片描述

4.2 前端存储token

修改一下登录页面,认证登录成功之后,把返回的token接收,存入localStorage

在这里插入图片描述
测试一下:没有问题,本地存储了token

在这里插入图片描述

4.3 前端请求头携带token

先创建一个hello页面

在这里插入图片描述代码如下:

<template>
    <el-form style="width: 20%" label-width="100px" class="demo-ruleForm">

        <el-form-item>
            <el-button type="primary" @click="submitForm()">测试hallo接口</el-button>
        </el-form-item>

    </el-form>
</template>

<script>
    export default {
        methods: {
            //这个是提交方法
            submitForm() {
                axios.post('http://localhost:8888/hello',this.ruleForm).then(res=>{
                    
                })
            }
        }
    }
</script>

<style scoped>

</style>

启动项目,页面测试一下:

认证失败,因为请求头没有携带任何token

在这里插入图片描述
创建一个utils文件夹,在utils下创建request.js

在这里插入图片描述
在main.js进行全局引入

在这里插入图片描述

修改hello接口,只需要写一个hello就行了,不需要写全部的接口地址

在这里插入图片描述

五、测试

5.1 认证测试

填一个错误的密码,认证失败

在这里插入图片描述
填入一个正确的密码,认证成功

在这里插入图片描述

5.2 授权测试

然后,我们测试一下,请求头已经携带了token了

在这里插入图片描述

然后看一下,响应,都没有问题,OK,这个账号是有这个权限的。

在这里插入图片描述

我们把权限改了

在这里插入图片描述

再进行一下测试:当前账号已经没有权限了。

在这里插入图片描述

一键三连有没有捏~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/523480.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BugKu:Flask_FileUpload

1.打开此题 通过题目知道这个是一个关于Flask的文件上传的漏洞题目 2.查看网页源代码 Flask是一个使用Python编写的轻量级Web应用框架。 这里又提示说用python来运行结果&#xff0c;那很有可能就是要通过python脚本来抓取flag 3.编辑Python脚本 工具&#xff1a;pycharm 文件…

第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 2、门牌制作 #include<iostream>#def…

服务注册 Zookeeper

服务注册 Zookeeper 1、配置并启用 Zookeeper # application.yml dubboregistryaddress: zookeeper://localhost:2181# dubbo.properties dubbo.registry.addresszookeeper://localhost:2181<dubbo:registry address"zookeeper://localhost:2181" />address …

YOLOv5实例分割

目录 一,准备工作 1.1 标签数据解释: 1.2 数据集格式转换方法汇总 图片和JSON在一个文件夹的形式,通过下面的代码会再相同文件夹下生成对应的txt文件 方式2: 二,训练、测试、检测 一,准备工作 用conda创建自己的环境 安装项目路径下的requirements.txt 数据集准备…

快速获取文件夹及其子文件夹下的所有文件名

1、在文件夹中新建文本文档&#xff0c;命名为“命令.txt” 2、输入以下内容 tree /F > 文件名.txt dir *.* /B > 文件名.txt 其中文件名和文件格式可以是任意的&#xff0c;tree命令可生成文件及其子文件夹下所有文件的名称&#xff0c;dir命令只生成当前目…

OKR管理模式:企业新引擎,驱动未来发展

在当今竞争激烈的市场环境中&#xff0c;越来越多的企业开始采用OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;管理模式&#xff0c;以期解决一系列发展难题&#xff0c;驱动企业向前发展。OKR作为一种目标管理工具&#xff0c;旨在帮助企…

Java实现二叉树(上)

1.树型结构 1.1树型结构的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 1.2树型结构的特点…

AI预测福彩3D第28弹【2024年4月6日预测--第7套算法重新开始计算第1次测试】

今天开始&#xff0c;咱们开始进行第7套算法的测试&#xff0c;第7套算法将综合012路权重、012路直选及012路和值进行预测。好了&#xff0c;先上图后上结果吧~ 2024年4月6日福彩3D的七码预测结果如下 第一套&#xff1a; 百位&#xff1a;1 2 4 5 7 8…

基于javassm实现的列车票务信息管理系统

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…

Network AIS Receiver R400N

目录 Introduction OVERVIEW BASIC FEATURES APPLICATIONS SPECIFICATIONS Introduction OVERVIEW The R400N provides a method of monitoring the position, speed and heading of AIS vessels within VHF range. It can decode of Class A, Class B, Aids to Navigat…

位运算、芯片封装方式、中断、定时器

我要成为嵌入式高手之4月3、7日51单片机第一、二天&#xff01;&#xff01; ———————————————————————————— 裸机驱动&#xff1a;51 -> s3c2440 -> linux Soc片上系统 位运算 高位&#xff1a;MSB 地位&#xff1a;LSB 按位与&…

【C++第三阶段】string容器

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 string容器基本概念构造函数赋值操作拼接操作字符串查找和替换字符串比较字符串存取字符串插入和删除字符串子串 string容器 基本概念 本质&#x1f449;string是C风格的字符串&…

php校园活动报名系统vue+mysql

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等本选题则旨在通过标签分类管理等方式&#xff0c;管理员&#xff1b;首页、个人中心、学生管理、…

EPSON推出XV-9100CD为检测车身所处姿势状态提供解决方案

陀螺仪传感器是电子稳定控制系统中不可缺少的传感器之一。与通常的民用部件相比&#xff0c;用于车载的部件有一些特殊要求。因为涉及安全&#xff0c;所以高可靠性是必备条件。在制动组件等高温条件下的耐久性、受振动或撞击时不会产生异常输出亦是十分重要的条件。爱普生推出…

Python景区票务人脸识别系统(V2.0),附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

4、双指针-移动零

首先不能复制&#xff0c;只能在原数组是哪个操作&#xff0c;那么很多集合的方式就不行了。当然在现实开发中肯定是可以的。目前按照题目来说是不可以的。所以我们可以思考下&#xff0c;是否可以通过交换来实现。 初始化一个变量 to 为 0。这个变量的目的是跟踪非零元素应该…

书籍《笔记的方法》读后感

读完《笔记的方法》有几周的时间&#xff0c;书里有些记录的内容&#xff0c;觉得非常有价值的&#xff0c;自己的观点&#xff0c;当下读书&#xff0c;其实并没有那么高大尚&#xff0c;就是存粹陶冶下情操&#xff0c;读书还是有一定作用的&#xff0c;毕竟看书只能慢慢来&a…

数字反转(StringBuffer)

题目 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();StringBuffer s new StringBuffer();//字符串转为整型数if(n>0) {s.append(n);String ss s.reverse().toString()…

C++的List类(一):List类的基本概念

目录 前言 List类的基本概念 List的构造函数 List类迭代器的使用 List的功能 List的元素访问 List与vector比较 前言 vector的insert和erase都会导致迭代器失效list的insert不会导致迭代器失效&#xff0c;erase会导致迭代器失效 insert导致失效的原因是开辟了新空间后…

2024人工智能与机器人系统国际学术会议(ICAIRS2024)

2024人工智能与机器人系统国际学术会议(ICAIRS2024) 会议简介 2024人工智能与机器人系统国际学术会议(ICAIRS2024)将在杭州举行。该会议旨在为人工智能和机器人系统的专家学者提供一个平台&#xff0c;以分享最新的研究成果、交流思想、探讨学术问题&#xff0c;并促进跨学科…