SpringBoot +Vue CLI案例之编写后端项目

后端使用的技术为

Spring Boot Spring Web Spring Security

1.建立项目

2.选择依赖

3.编写Spring Security配置类

package com.example.springbootvue.config;

import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.web.cors.CorsUtils;

import java.io.PrintWriter;

/**
 * @author HF_D
 * @version : [v1.0]
 * @description : [Spring Security配置类]
 * @createTime : [2021/7/10 1:33]
 */
@EnableWebSecurity
/**
 * 启用方法安全设置
 */
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
          
   
    @Override
    protected void configure(HttpSecurity http) throws Exception {
          
   
        http.cors()//开启跨域
                .and().csrf().disable()//关闭CSRF
                .authorizeRequests()
                .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
                .anyRequest().authenticated()
                .and().formLogin().successHandler((request, response, auth) -> {
          
   
            response.setContentType("text/html; charset=UTF-8");
            PrintWriter out = response.getWriter();
            out.println("登录成功");
        });//使用表单登录
    }
    
}

4.设置内存用户

@Override
    protected void configure (AuthenticationManagerBuilder auth) throws Exception{
          
   
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                .withUser("admin")
                .password(new BCryptPasswordEncoder().encode("admin"))
                .roles("ADMIN")
                .and()
                .withUser("user")
                .password(new BCryptPasswordEncoder().encode("user"))
                .roles("USER");
    }

5.设置跨域

package com.example.springbootvue.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @author : [HF_D]
 * @version : [v1.0]
 * @description : [跨域配置]
 * @createTime : [2021/7/10 2:01]
 */
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
          
   

    private CorsConfiguration buildConfig() {
          
   
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1允许任何域名使用
        corsConfiguration.addAllowedOrigin("*");
        // 2允许任何头
        corsConfiguration.addAllowedHeader("*");
        // 3允许任何方法(post、get等)
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
          
   
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
          
   
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                .maxAge(3600);
    }
}

6.跟前端测试登录功能的实现

经验分享 程序员 微信小程序 职场和发展