java面试Angular框架专题

基于JWT的接口权限验证

2021-10-25  本文已影响0人  听书先生

在做登录界面时,有很多关于安全验证的方法,比如:
1、可以使用Session来实现安全验证
2、对请求的接口的参数进行加密的签名验证
3、使用JWT实现接口的验证

nodejs中使用JWT实现接口的安全验证:

1、安装jsonwebtoken

cnpm install jsonwebtoken --save

2、生成token

var jwt = require('jsonwebtoken');
router.get('/',function(req,res,next){
    var token = jwt.sign({name:'admin'},'sign',{
      expiresIn: 60
    });
    res.send(token);
})

3、安装basic-auth

cnpm install basic-auth --save

4、获取请求头里面的token

router.get('/addressList',function(req,res,next){
  var token = auth(req);
})
router.get('/addressList', function (req, res, next) {
  var tooken = auth(req);
  if (tooken) {
    try {
      var  power= jwt.verify(token.name, 'sign');
      console.log( power);
      if ( power) {
        res.send('有权限');
      } else {
        res.send('没有权限');
      }
    } catch (error) {
      res.send(error);
    }
  }else{
    res.send('没有权限');
  }
});

5、Vue React Angular 使用 Axios 访问基于 Jwt 的接口

axios.get("http://localhost:3000/api/list", {
  auth: {
    username:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoi5byg5LiJIiwiaWF0IjoxNTcxMTIwNTE3LCJleHAiOjE1NzExMjIzMTd9.Kcbvg7AGqZlmVyUb8CKyO3fqf-zEwqIWEN2nsUSl17Q", 
    password: "123456"
    }
  }).then(function(response) {
    // handle success
    console.log(response);
   }).catch(function(error) {
    // handle error
    console.log(error);
  }).finally(function() {
    // always executed
})
上一篇下一篇

猜你喜欢

热点阅读