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,这个账号是有这个权限的。

在这里插入图片描述

我们把权限改了

在这里插入图片描述

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

在这里插入图片描述

一键三连有没有捏~~

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpriingBoot整合MongoDB多数据源

背景&#xff1a; MongoDB多数据源&#xff1a;springboot为3以上版本&#xff0c;spring-boot-starter-data-mongodb低版本MongoDBFactory已过时&#xff0c; 改为MongoDatabaseFactory。 1、pom引入&#xff1a; <dependency><groupId>org.springframework.boo…

Java常用API_正则表达式_检验字符串是否满足规则——基础使用方法及综合练习

正则表达式可以校验字符串是否满足一定的规则&#xff0c;并用来校验数据格式的合法性。 简单举例&#xff1a; 校验一个qq号是否符合要求 要求&#xff1a;6位到20位之内&#xff0c;不能以0开头&#xff0c;必须全是数字 代码演示&#xff1a; public class Test1 {public…

报修小程序怎么建立?维修服务行业的智能化升级

在这个数字化飞速发展的时代&#xff0c;维修服务行业也在经历着前所未有的变革。消费者对于服务的期待不再局限于传统的电话预约或线下等待&#xff0c;而是希望能够通过更加智能、便捷的途径解决日常生活中的维修问题。在这样的背景下&#xff0c;报修小程序应运而生&#xf…

Redis客户端

2.Redis客户端 安装完成Redis&#xff0c;我们就可以操作Redis&#xff0c;实现数据的CRUD了。这需要用到Redis客户端&#xff0c;包括&#xff1a; 命令行客户端图形化桌面客户端编程客户端 2.1.Redis命令行客户端 Redis安装完成后就自带了命令行客户端&#xff1a;redis-…

神经网络中的超参数调整

背景 在深度神经网络学习和优化中&#xff0c;超参数调整一项必备技能&#xff0c;通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态&#xff0c;及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数&#x…

Dapr(三) Dapr核心组件的使用一

结合前两期 Dapr(一) 基于云原生了解Dapr(Dapr(一) 基于云原生了解Dapr-CSDN博客) Dapr(二) 分布式应用运行时搭建及服务调用(Dapr(二) 分布式应用运行时搭建及服务调用-CSDN博客) 下篇推出dapr服务注册与发现&#xff0c;dapr组件绑定&#xff0c;dapr Actor功能。 目录 1.…

chrome google浏览器添加插件扩展失败怎么办,无法从该网站添加应用、扩展程序和用户脚本确定,

无法从该网站添加应用、扩展程序和用户脚本确定 chrome google浏览器添加插件扩展失败怎么办&#xff0c;无法从该网站添加应用、扩展程序和用户脚本确定&#xff0c; 需要打开调试模式 chrome://extensions/

安装selenium和关于chrome高版本对应的driver驱动下载安装【Win/Mac 】

目录 一、查看自己电脑上chrome的版本 二、下载 ChromeDriver 三、安装selenium 法一&#xff1a;打开pycharm&#xff0c;点击File&#xff0c;Setting进入配置页面&#xff0c;点击Project下面的Python Interpreter进入环境配置页面&#xff0c;点击。输入selenium。之后…

产品推荐 | 星嵌基于TI TMS320C6657+Xilinx XC7Z035/045 DSP+FPGA+ARM工业核心板

1、产品概述 广州星嵌电子科技有限公司研发的C6657ZYNQ7035/45工业核心板&#xff0c;是基于TI KeyStone 架构C6000 系列TMS320C6657 双核C66x定点/浮点DSP 以及 Xilinx ZYNQ-7000 系列XC7Z035/045 SoC 处理器设计的。 DSP处理器采用TMS320C6657&#xff0c;双核C66x定点/浮点…

HarmonyOS实战开发-如何实现分布式帐号相关的功能。

介绍 本示例主要展示了分布式帐号相关的功能&#xff0c;使用ohos.account.distributedAccount、ohos.account.osAccount等接口&#xff0c;实现了绑定分布式帐号、解绑分布式帐号、更新分布式帐号信息和管理分布式帐号的功能&#xff1b; 效果预览 使用说明 1.首次进入应用会…

idea 开发serlvet汽车租赁管理系统idea开发sqlserver数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 汽车租赁管理系统是一套完善的web设计系统sqlserver数据库 系统采用serlvetdaobean mvc 模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 java se…

Mac安装Docker提示Another application changed your Desktop configuration解决方案

1. 问题描述 Mac安装Docker后&#xff0c;提示Another application changed your Desktop configuration&#xff0c;Re-apply configurations无效 2. 解决方案 在终端执行下述命令即可解决&#xff1a; sudo ln -sf /Applications/Docker.app/Contents/Resources/bin/docke…