Spring Security——09,解决跨域

这篇具有很好参考价值的文章主要介绍了Spring Security——09,解决跨域。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

一、SpringBoot配置

配置运行跨域请求

spring security 配置跨域,Spring security,spring,java,后端,security,token

二、配置SpringSecurity

②开启SpringSecurity的跨域访问

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

spring security 配置跨域,Spring security,spring,java,后端,security,token

三、修改端口

spring security 配置跨域,Spring security,spring,java,后端,security,token

四、修改vue项目

vue项目:

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

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

4.1 拿到token

创建一个登录页面

spring security 配置跨域,Spring security,spring,java,后端,security,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项目:

spring security 配置跨域,Spring security,spring,java,后端,security,token
然后测试一下,登录成功,解决跨域请求,拿到token

spring security 配置跨域,Spring security,spring,java,后端,security,token

4.2 前端存储token

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

spring security 配置跨域,Spring security,spring,java,后端,security,token
测试一下:没有问题,本地存储了token

spring security 配置跨域,Spring security,spring,java,后端,security,token

4.3 前端请求头携带token

先创建一个hello页面

spring security 配置跨域,Spring security,spring,java,后端,security,token代码如下:

<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

spring security 配置跨域,Spring security,spring,java,后端,security,token
创建一个utils文件夹,在utils下创建request.js

spring security 配置跨域,Spring security,spring,java,后端,security,token
在main.js进行全局引入

spring security 配置跨域,Spring security,spring,java,后端,security,token

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

spring security 配置跨域,Spring security,spring,java,后端,security,token

五、测试

5.1 认证测试

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

spring security 配置跨域,Spring security,spring,java,后端,security,token
填入一个正确的密码,认证成功

spring security 配置跨域,Spring security,spring,java,后端,security,token

5.2 授权测试

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

spring security 配置跨域,Spring security,spring,java,后端,security,token

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

spring security 配置跨域,Spring security,spring,java,后端,security,token

我们把权限改了

spring security 配置跨域,Spring security,spring,java,后端,security,token

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

spring security 配置跨域,Spring security,spring,java,后端,security,token文章来源地址https://www.toymoban.com/news/detail-851858.html

一键三连有没有捏~~

到了这里,关于Spring Security——09,解决跨域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Security 6.1.2 认证 配置

    我实现了UserDetailsService (loadUserByUsername通过用户名查用户) 以及UserDetailsPasswordService(updatePassword)更改密码

    2024年02月14日
    浏览(42)
  • Spring Boot安全管理—Spring Security基本配置

    1.1 创建项目,添加依赖 创建一个Spring Boot Web 项目,然后添加spring-boot-starter-security依赖。 1.2 添加hello接口 在项目中添加一个简单的/hello接口,内容如下: 1.3 启动项目测试 访问/hello接口会自动跳转到登录页面,这个页面有Spring Security提供的。 默认的用户名是user,默认的登

    2024年02月08日
    浏览(52)
  • Spring Security 6 配置方法,废弃 WebSecurityConfigurerAdapter

    最近阿里云的项目迁回本地运行,数据库从阿里云的RDS(即Mysql5.6)换成了本地8.0,Redis也从古董级别的2.x换成了现在6,忍不住,手痒,把jdk升级到了17,用zgc垃圾回收器,源代码重新编译重新发布,结果碰到了古董的SpringBoot不支持jdk17,所以有了这篇日志。记录一下SpringBo

    2024年02月01日
    浏览(39)
  • Spring Security之基于HttpRequest配置权限

    今天我们重点聊聊授权方式的另外一种:基于HttpServletRequest配置权限 一个典型的配置demo 从这里也可以看出,要实现基于RBAC,还是比较容易的。也比较容易使用。但是如果想要动态的增加角色,就需要我们定制AuthorizationManager。 HttpSecurity是负责构建DefaultSecurityFilterChain的。而

    2024年04月11日
    浏览(42)
  • Springboot 实践(6)spring security配置与运用

            前文讲解了springboot项目添加静态资源目录,到目前为止,项目已经建立了后台服务控制、静态资源目录等服务;项目开发是为特定用户服务的,不具备访问权限用户,不允许访问系统,那么如何对系统资源进行保护呢?这就涉及到了我们此文所要引入的spring sec

    2024年02月12日
    浏览(38)
  • 【高危】Spring Security鉴权规则错误配置风险

    Spring Security 是一套为基于Spring的应用程序提供说明性安全保护的安全框架。 在 Spring Security 受影响的版本中,由于 Spring Security 的授权规则会应用于整个应用程序上下文,当应用程序中包含多个servlet,并且其中一个为DispatcherServlet时 ,使用 requestMatchers(String) 方法错误地将非

    2024年02月15日
    浏览(33)
  • spring security @EnableWebSecurity自动配置DaoAuthenticationProvider流程

    spring-security:6.2.1 满足下列情况时,spring-security会自动配置DaoAuthenticationProvider 使用@EnableWebSecurity 注册UserDetailsServiceBean 没有注册其他AuthenticationProvider类型的Bean 没有通过http.authenticationProvider配置 org.springframework.security.config.annotation.web.configuration.EnableWebSecurity org.springframework.s

    2024年01月18日
    浏览(36)
  • 后端进阶之路——深入理解Spring Security配置(二)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ 前端炫酷代码分享 ★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★ 架构咱们从0说 ★ ★ 数据流通的精妙之道★ ★后端进

    2024年02月14日
    浏览(53)
  • 权限管理详解:认证、授权及Spring Security配置解析

    深入探讨权限管理的重要性与实现方式,包括认证、授权概念,基于角色和资源的访问控制方案,以及Spring Security框架的概述和快速入门指南。

    2023年04月10日
    浏览(41)
  • Spring Security OAuth Client配置加载源码分析

    相关文章: OAuth2的定义和运行流程 Spring Security OAuth实现Gitee快捷登录 Spring Security OAuth实现GitHub快捷登录 Spring Security的过滤器链机制 这一节我们以前面默认的OAuth2 客户端集成为例,来了解下配置文件的加载,示例见第二、第三节。 假如你没有看过相关视频,或者书,但想要

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包