当前位置:首页 > VUE

springboot vue实现登录

2026-01-18 16:23:24VUE

Spring Boot 和 Vue 实现登录功能

后端(Spring Boot)

  1. 创建 Spring Boot 项目
    使用 Spring Initializr 创建一个项目,添加以下依赖:

    • Spring Web
    • Spring Security
    • Spring Data JPA
    • MySQL Driver
  2. 配置数据库
    application.propertiesapplication.yml 中配置数据库连接:

    spring.datasource.url=jdbc:mysql://localhost:3306/your_database
    spring.datasource.username=your_username
    spring.datasource.password=your_password
    spring.jpa.hibernate.ddl-auto=update
  3. 创建用户实体和 Repository
    定义用户实体类:

    @Entity
    @Table(name = "users")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String username;
        private String password;
        // Getters and Setters
    }

    创建 JPA Repository:

    public interface UserRepository extends JpaRepository<User, Long> {
        User findByUsername(String username);
    }
  4. 实现 Spring Security 配置
    创建安全配置类:

    springboot vue实现登录

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/api/auth/").permitAll()
                .anyRequest().authenticated();
        }
    
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
        }
    
        @Bean
        public PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder();
        }
    }
  5. 创建登录 API
    实现登录接口:

    @RestController
    @RequestMapping("/api/auth")
    public class AuthController {
        @Autowired
        private AuthenticationManager authenticationManager;
    
        @PostMapping("/login")
        public ResponseEntity<?> login(@RequestBody LoginRequest loginRequest) {
            try {
                Authentication authentication = authenticationManager.authenticate(
                    new UsernamePasswordAuthenticationToken(
                        loginRequest.getUsername(),
                        loginRequest.getPassword()
                    )
                );
                SecurityContextHolder.getContext().setAuthentication(authentication);
                return ResponseEntity.ok("Login successful");
            } catch (Exception e) {
                return ResponseEntity.status(401).body("Login failed");
            }
        }
    }

前端(Vue)

  1. 创建 Vue 项目
    使用 Vue CLI 创建项目:

    vue create vue-login
  2. 安装 Axios
    用于发送 HTTP 请求:

    springboot vue实现登录

    npm install axios
  3. 创建登录页面
    src/views/Login.vue 中实现登录表单:

    <template>
      <div>
        <form @submit.prevent="login">
          <input v-model="username" placeholder="Username" />
          <input v-model="password" type="password" placeholder="Password" />
          <button type="submit">Login</button>
        </form>
      </div>
    </template>
    
    <script>
    import axios from 'axios';
    
    export default {
      data() {
        return {
          username: '',
          password: '',
        };
      },
      methods: {
        async login() {
          try {
            const response = await axios.post('http://localhost:8080/api/auth/login', {
              username: this.username,
              password: this.password,
            });
            alert(response.data);
          } catch (error) {
            alert('Login failed');
          }
        },
      },
    };
    </script>
  4. 配置路由
    src/router/index.js 中配置登录页路由:

    import Vue from 'vue';
    import Router from 'vue-router';
    import Login from '../views/Login.vue';
    
    Vue.use(Router);
    
    export default new Router({
      routes: [
        {
          path: '/login',
          name: 'Login',
          component: Login,
        },
      ],
    });
  5. 运行项目
    启动 Vue 项目:

    npm run serve

跨域问题解决

在 Spring Boot 中配置跨域支持:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/")
            .allowedOrigins("http://localhost:8081")
            .allowedMethods("*")
            .allowedHeaders("*");
    }
}

测试登录功能

  1. 启动 Spring Boot 后端(默认端口 8080)。
  2. 启动 Vue 前端(默认端口 8081)。
  3. 访问 http://localhost:8081/login,输入用户名和密码测试登录功能。

标签: springbootvue
分享给朋友:

相关文章

vue实现前端注册

vue实现前端注册

Vue 实现前端注册功能 注册表单设计 使用 Vue 的模板语法创建注册表单,包含用户名、邮箱、密码和确认密码字段。表单需绑定 v-model 实现双向数据绑定。 <template>…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直接使…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 me…

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <templ…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <temp…

vue实现详情

vue实现详情

Vue 实现详情页的常见方法 使用动态路由 在 Vue Router 中配置动态路由参数,通过 $route.params 获取详情 ID。示例路由配置: { path: '/detail/:i…