vue3登录注册功能
时间: 2023-07-16 07:16:27 浏览: 87
实现 Vue3 的登录注册功能可以分为以下几个步骤:
1. 安装依赖
```bash
npm install axios --save
npm install vue-router --save
```
2. 创建路由
在 `src/router/index.js` 中定义路由:
```javascript
import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/views/Login.vue'
import Register from '@/views/Register.vue'
const routes = [
{
path: '/',
name: 'Login',
component: Login
},
{
path: '/register',
name: 'Register',
component: Register
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
```
3. 创建登录和注册组件
在 `src/views` 目录下创建 `Login.vue` 和 `Register.vue` 组件,分别用于登录和注册。
登录组件:
```html
<template>
<div>
<h1>登录</h1>
<form @submit.prevent="login">
<div>
<label for="username">用户名</label>
<input type="text" id="username" v-model="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" id="password" v-model="password" />
</div>
<button type="submit">登录</button>
</form>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
username: '',
password: ''
}
},
methods: {
login() {
axios.post('/api/login', {
username: this.username,
password: this.password
}).then(response => {
// 登录成功
localStorage.setItem('token', response.data.token)
this.$router.push('/')
}).catch(error => {
// 登录失败
console.error(error)
})
}
}
}
</script>
```
注册组件:
```html
<template>
<div>
<h1>注册</h1>
<form @submit.prevent="register">
<div>
<label for="username">用户名</label>
<input type="text" id="username" v-model="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" id="password" v-model="password" />
</div>
<button type="submit">注册</button>
</form>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
username: '',
password: ''
}
},
methods: {
register() {
axios.post('/api/register', {
username: this.username,
password: this.password
}).then(response => {
// 注册成功
this.$router.push('/')
}).catch(error => {
// 注册失败
console.error(error)
})
}
}
}
</script>
```
4. 创建后端接口
在后端创建 `/api/login` 和 `/api/register` 接口,用于处理登录和注册请求。这里我们假设后端使用 Node.js 和 Express 框架。
```javascript
const express = require('express')
const bodyParser = require('body-parser')
const jwt = require('jsonwebtoken')
const app = express()
app.use(bodyParser.json())
const secret = 'my_secret_key'
app.post('/api/login', (req, res) => {
const { username, password } = req.body
// 验证用户名和密码
if (username === 'admin' && password === '123456') {
const token = jwt.sign({ username }, secret, { expiresIn: '1h' })
res.send({ token })
} else {
res.status(401).send({ message: '用户名或密码错误' })
}
})
app.post('/api/register', (req, res) => {
const { username, password } = req.body
// 注册用户
res.send({ message: '注册成功' })
})
app.listen(3000, () => {
console.log('Server is running at http://localhost:3000')
})
```
5. 使用 JWT 进行身份验证
在登录成功后,我们将从后端返回的 token 存储到 localStorage 中,以备后续请求验证使用。在每个需要身份验证的请求中,我们需要将 token 添加到请求头中,如下所示:
```javascript
import axios from 'axios'
// 添加请求拦截器
axios.interceptors.request.use(
config => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
error => {
return Promise.reject(error)
}
)
// 发送请求
axios.get('/api/userinfo').then(response => {
console.log(response.data)
}).catch(error => {
console.error(error)
})
```
以上就是使用 Vue3 实现登录注册功能的基本步骤,当然还有很多细节需要注意,例如表单验证、密码加密等。
阅读全文