zoukankan      html  css  js  c++  java
  • 4.加密与token(node+express)

    一. 敏感数据加密
    1.安装并引入中间件
        npm install utility
        const utils = require('utility')
    2.加密方法
        function md5Pwd(pwd) {
            const salt = 'sensetime_is_good_5589x321yza67.!@#IUHJh~~'
            return utils.md5(utils.md5(pwd + salt))
        }
    3.登录注册均调用 md5Pwd()
        例如:
            User.findOne({
                user,
                pwd: md5Pwd(pwd)
            }

    二. Token
    1.安装并引入中间件
        npm install express-jwt
        npm install jsonwebtoken
        const expressJWT = require('express-jwt')
        const jwt = require('jsonwebtoken')
    2.设置API白名单
        const expressJWT = require('express-jwt')
        const secretOrPrivateKey = "SENSETIMEencipherment 1895@#$%^&*_" // 密钥
        app.use(expressJWT({
            secret: secretOrPrivateKey
        }).unless({
            path: ['/user/login','/user/register'] //白名单
        }))
    3.验证token
        app.use(function(err, req, res, next) {
            if (err.name === 'UnauthorizedError') {
                res.status(401)
                return res.json({
                    code: -1,
                    message: 'token已过期'
                })
            }
            if (err.name === 'TokenExpiredError') {
                res.status(401)
                return res.json({
                    code: -2,
                    message: '没有token'
                })
            }
        })
    4.获取token
        Router.post('/login', function(req, res) {
            // ... 这里写查询数据库的代码

            /*
            * 登录成功后返回的数据:
            * username用户名,String ,
            * userinfo用户信息,Object ,
            * authority菜单权限,Array
            **/
            res.json({
                result: 'ok',
                data:{ userinfo, authority},
                token: jwt.sign( { name: username }, secretOrPrivateKey, { expiresIn: 60 * 60 * 24 * 7 }),
            })
        })

  • 相关阅读:
    Android开发_Animation
    spring开发_JDBC操作MySQL数据库_使用xml配置事务管理
    spring开发_AOP_代理模式
    java file 文件操作 operate file of java
    spring开发_spring构造注入Bean
    spring开发_spring中Bean的作用域_singleton_prototype
    spring开发_JDBC操作MySQL数据库
    java的jxl技术导入Excel
    spring开发_spring环境搭建
    魅族m8开发 step by step(1)(让程序跑起来)
  • 原文地址:https://www.cnblogs.com/wangrui38/p/10368388.html
Copyright © 2011-2022 走看看