token在nodeJs中使⽤
<!--
和java⼀样,token的⽣成/存储有多种⽅式,下⾯我们重点讲⼀种⽅式:
即使⽤:jwt ; 下载依赖npm install jsonwebtoken --save
(ps:因为前后端分离常常会涉及到跨域,前⾯我已经讲过了。引⼊cors等操作)。
为了⽅便起见 我将jwt的使⽤⽅式单独封装成js⽂件
// 引⼊模块依赖
var jwt = require('jsonwebtoken');
var secretOrPrivateKey="jwtSecret",//密钥,⼀般很复杂,可以存服务器本地;然后获取;
duringTime={expiresIn:60*30};// 1⼩时过期;
var  Jwt={
setJwt:function (content) {
var token=jwt.sign(content, secretOrPrivateKey,duringTime);
return token
},
getJwt:function (token,callback) {
jwt.verify(token,secretOrPrivateKey, function(err, decode){
callback(err,decode);
});
}
};
接下来使⽤:
//⼀:获取并鉴权。我习惯在app.js中进⾏token鉴权
app.use(function (request,response,next) {
if(request.url=='/routers/load/doLogin'||request.url=='/routers/load/doRegist'){//可以更多。不列举      next();
}else{
var token=ken;
if(token&&token!=''){
//验证token
if (err) {
//时间失效的时候 || 伪造的token
response.send({'msgCode':-1});
} else {
//获取通⾏权限
next();
}
})
}else{
//token不存在
response.send({"msgCode":-1});
}
}
});
//⼆:⽣成并传递
我个⼈喜欢和java后端⼀样,将路由和逻辑处理分开,新建⼀个service⽂件夹;这样能让路由看的⼲净,业务处理都在service层controller层--routers路由
var express=require("express");
var routers=express.Router();
var userService=require("../../services/userService");
routers.post("/doLogin",function (request,response) {
var data={
username:request.body.username,
password:request.body.password
};
userService.findUser(data,function (res) {
response.send(res)
});
});
routers.post("/doRegist",function (request,response) {
var data={
username:request.body.username,
password:request.body.password
};
userService.addUser(data,function (res) {
response.send(res)
});
});
service层--会在这⾥⽣成token。
var dbName='dbUser';
var collectionName='user';
var connect=require("../myUtils/dbUtils/connet");
var sortData={};
var Jwt=require("../myUtils/jwtUtils/jwt");
var userService={
findUser:function (data,callback) {
connect.find(dbName,collectionName,data,sortData,function (res) {
if(res.length>0){
var token=Jwt.setJwt({username:data.username});
callback({
msgCode:0,
message:'登陆成功!',
token:token
});
}else{
callback({
msgCode:-1,
message:'登陆失败!⽤户名或密码错误'
});
}
})
},
addUser:function (data,callback) {
connect.find(dbName,collectionName,data,sortData,function (res) {
if(res.length>0){
callback({
msgCode:-1,
message:"注册失败!⽤户名已经注册"
})
}else{
var token=Jwt.setJwt({username:data.username});
connect.add(dbName,collectionName,data,function (res) {
sult.n>=1){
callback({
msgCode:0,
message:"注册成功!",
sort函数 jstoken:token
});
}else{
callback({
msgCode:-1,
message:"异常错误,注册失败!"
});
}
})
}
})
}
};
最后前端需要做的是,在登录和注册页⾯接受传过来的token,存⾄本地(localStorage等),然后再其他页⾯获取并向服务器请求数据时携带即可
-->
可参见:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。