Nodejs Express 登入模块及JWT 验证
2021/4/14 12:29:10
本文主要是介绍Nodejs Express 登入模块及JWT 验证,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
install package
express-jwt
jsonwebtoken
md5
app.js 配置
//使用此方法拦截所有请求看token是否正确(此方法写在静态资源加载之后,不然静态资源不能访问) app.use(expressJWT({ secret: PRIVITEKEY, algorithms: ['HS256'] }).unless({ path: ['/admin/login'] //⽩白名单,除了了这⾥里里写的地址,其他的URL都需要验证 }));
login
// 登录接口 router.post("/login",async (req,res,next) => { try { // 对应前台的传参 let {username,password} = req.body; // 跟数据库对应,看是否存在当前用户 password = md5(`${password}${SAULT}`); pool.getConnection(function (err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; // 建立连接 增加一个用户信息 connection.query("select * from admin where username = ? and password = ?",[username,password], function (err, result) { if (result) { let token = jwt.sign({username, role: result[0].role},PRIVITEKEY,{expiresIn:EXPIRESD}); res.send({ code:0, msg:"登录成功", token:token }) }else { res.send({ code:-1, msg:"用户名或者密码错误" }) } // 释放连接 connection.release(); }); }); } catch (error) { // p抛出异常并交由错误中间件处理 console.log(error); next(error); } })
filter
let filter = (req, res, next) => { var user = req.user console.log(user) if (user != null && (user.exp > user.iat)) { next() } else { res.send({ code: -1, msg: "用户名或密码错误" }) } }
使用 filter
// 获取用户 router.get('/', filter.admin_filter, function (req, res, next) { // 从连接池获取连接 pool.getConnection(function (err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; // 建立连接 增加一个用户信息 connection.query(userSQL.queryAll, function (err, result) { if (result) { var data = { code: 200, msg: 'success', result: result }; } // 以json形式,把操作结果返回给前台页面 responseJSON(res, data); // 释放连接 connection.release(); }); }); });
这篇关于Nodejs Express 登入模块及JWT 验证的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist
- 2024-03-11icons for vue
- 2024-03-07breadcrumbs react js
- 2024-03-06react login page example
- 2024-03-06react router uselocation
- 2024-03-04postgres jsonb_set