文章目录
1、unique: true引起报错
用此方法设置唯一约束会引起node报错,解决方式如下:
unique: 'userName'
2、接口中的时间处理,时间偏移+格式化
loginDate: {
type: DataTypes.DATE,
get() {
return moment(this.getDataValue('loginDate')).utcOffset(8).format('YYYY-MM-DD HH:mm:ss');
}
},
3、请求携带token
使用axios中的请求拦截器进行携带
axios.interceptors.request.use(
function(config) {
// 在发送请求之前做些什么
// 1. 发送请求时,如果有token,则附带到请求头中去
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization ="bearer " + token;
}
return config;
},
function(error) {
// 对请求错误做些什么
return Promise.reject(error);
}
);
4、token过期时间实时监控
在axios的响应拦截器中进行监控,具体代码如下:
axios.interceptors.response.use(
resp => {
// 在请求响应之后做些什么
// 2. 响应结果如果有token,保存token到本地
if (resp.headers.authorization) {
localStorage.setItem("token", resp.headers.authorization)
}
return resp;
}, err => {
// 3. 相应的时候,如果响应消息码是403(没有token,token失效),则在本地删除token
if (err.response.status === 403) {
localStorage.removeItem("token");
router.push("/login");
}
return Promise.reject(err);
});
5、页面渲染落后于vueX的数据时
直接将数据动态设置到vuex中,具体代码如下:
<div class="welcome">
<i class="el-icon-user"></i>
欢迎登录,{{ this.$store.state.loginUser.data.userName }}
</div>
6、系统的管理员架构问题
超级管理员:只有一个,拥有查看所有数据,修改所有数据的权限,不可删除和禁用自己
高级管理员:通过超级管理员开启高级权限,可拥有查询所有数据,修改所有普通管理员用户数据的权限,不可删除和禁用高级管理员及以上用户,不可查看修改权限列。
普通管理员:不可查看用户管理模块,可查看常规数据。
7、设置跨域、跨域获取header里面的信息
通过cors中间件实现
//设置跨域
const cors = require('cors')
app.use(cors());
//设置可以跨域获取header里面authorization的信息
app.all('*', function(req, res, next) {
res.header('Access-Control-Expose-Headers', 'Authorization');
next();
});