Vue+Security+Springboot前后端交互

在前后端分离项目中,跨域一直是一个常常存在的事情,那么如何解决这个问题呢,看如下代码。

在springboot项目中的config目录下编写一个全局跨域配置

1:创建一个CorsConfiguration对象,并设置允许的域名、请求头和请求方法;
2:设置允许携带凭证,并添加允许的域名模式;
3:创建一个UrlBasedCorsConfigurationSource对象,并将之前配置的CorsConfiguration对象注册到该对象中;
4:最后返回一个新的CorsFilter对象,该对象使用UrlBasedCorsConfigurationSource对象作为其配置源。
5:这样配置后,该服务就能对来自任何路径的跨域请求进行过滤和处理

package com.aaaa.config;

import org.springframework.web.filter.CorsFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

/**
 * @program: AAA-Springboot-Security-21
 * @description: CrosConfig
 * @author: 七
 * @create: 2024-06-19 22:43
 **/
@SuppressWarnings("all")
@Configuration
public class CrosConfig {
    @Bean
    public CorsFilter corsFilter() {
//跨域配置
        CorsConfiguration corsConfiguration = new CorsConfiguration();
//    允许的域名,不要写*,否则cookie就无法使用了
        corsConfiguration.addAllowedOrigin("http://localhost:8080");
//    允许的请求头
        corsConfiguration.addAllowedHeader("*");
//请求方式
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
//允许携带凭证
        corsConfiguration.addAllowedOriginPattern("*");

//基于请求路径的跨域配置
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();

        //所有的路径都能跨域
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);

        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

为了实现一个简单的前后端交互登录效果,跨域解决后,要重实现一下userdetailsService,重写一下它里面的loadbyusernam方法,在里面进行登录用户的信息查询,

这个里面的权限信息sql表在之前的security文章中有实例

1:通过@Autowired注解自动注入userMapper对象,用于执行数据库操作。
2:重写loadUserByUsername方法,接收一个用户名作为参数。
3:调用userMapper的selectEmployee方法查询该用户名对应的员工信息,并返回一个Employee对象的List。
4:调用userMapper的selectRole方法查询该员工对应的角色信息,并返回一个Role对象的List。
5:创建一个SimpleGrantedAuthority对象的ArrayList,用于存储用户的权限信息。

6:遍历Role对象的List,将每个角色的名称转换为SimpleGrantedAuthority对象,并添加到list1中。
7:创建一个Integer对象的ArrayList,用于存储角色的ID。
8:遍历Role对象的List,将每个角色的ID添加到list2中。
9:调用userMapper的selectResource方法查询与list2中的角色ID对应的资源信息,并返回一个Resource对象的List。
10:遍历Resource对象的List,将每个资源的名称转换为S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值