学习【vue(前端)+express(后端)+monggodb(数据库)】登录注册系统学习笔记

5 篇文章 0 订阅
2 篇文章 0 订阅

学习【vue(前端)+express(后端)+monggodb(数据库)】登录注册系统学习笔记


vue前端注意事项

1.记得加入路由守卫。
在需要密码才能进入的路由上加上requireAuth属性

{
  path: '/',
  name: 'Hello',
  component: Hello,
  meta:{
    requireAuth:true
  }
},

再在下面加入路由守卫

// 验证 token,存在才跳转
router.beforeEach((to, from, next) => {
	let token = localStorage.getItem('token')
	if(to.meta.requireAuth) {
		if(token) {
			next()
		} else {
			next({
				path: '/login',
				query: { redirect: to.fullPath }
			})
		}
	} else {
		next()
	}
})

当路由跳转时,判断是否是跳入有meta属性的路由,若是则判断是否存在token,存在就跳转。
不存在就跳回登录界面。

2.设置请求头和设置axios的拦截响应

//修改请求的类型为json
const instance = axios.create();
instance.defaults.headers.post['Content-Type'] = 'application/json'

将token加入Authorization中

//设置请求头
axios.interceptors.request.use = instance.interceptors.request.use
instance.interceptors.request.use(config => {
	if(localStorage.getItem('token')) {
		config.headers.Authorization = `token ${localStorage.getItem('token')}`
			
	}
	return config
}, err => {
	return Promise.reject(err)
})

axios拦截响应

// axios拦截响应
instance.interceptors.response.use(response => {
	if(response.code == 401)
		console.log('token过期')
	return response
}, err => {
	return Promise.reject(err)
})

暴露出去

export default {
// 用户注册
userRegister(data) {
	return instance.post('/api/register', data)
},
// 用户登录
UserLogin(data) {
	return instance.post('/api/login', data)
},
// 获取用户
getUser() {
	return instance.get('/api/user')
},
// 删除用户
delUser(data) {
	return instance.post('/api/delUser', data)
}
}

express注意事项

1.使用token
引入const jwt = require(‘jsonwebtoken’)
创造token

//创造token,有效期为10s,方便观察	
module.exports = function (name) {
    const token = jwt.sign({
        name:name
    }, 'secret', {expiresIn: '10s'})
    return token
}

检查token要用在用户界面的使用

module.exports = function (req, res, next) {
    //console.log(req.headers)
    let token = req.headers['authorization'].split(' ')[1]
    // 解构 token,生成一个对象 { name: xx, iat: xx, exp: xx }
    let decoded = jwt.decode(token, 'secret')
	// 监测 token 是否过期
    if(token && decoded.exp <= Date.now() /1000){
        return res.json({
            code:401,
            message:"token过期,请重新登录"
        })
    }   
    next()
}

2。之后就是通过router写api接口给前端调用,这一部分较简单就不演示了。

数据库mongondb

// mongodb 连接?
mongoose.connect(config.mongodb, { useNewUrlParser: true })

var userSchema = mongoose.Schema({
email: String,
password: String,	
recheck: String,
token: String,
create_time: Date
})

之后userSchema的骨架一样的数据再操作以下存入数据库

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值