【问题标题】:How to verify user using Angular JS and JWT?如何使用 Angular JS 和 JWT 验证用户?
【发布时间】:2017-03-06 05:24:41
【问题描述】:

我目前正在开发注册模块。我可以使用表格进行注册。我将 Angular JS 用于前端,将 Nodejs 用于后端服务。我调用了 API,因此它被注册了。用户注册后,会收到一封验证邮件,点击按钮即可验证成功。

在发送邮件之前我已经实现了,但是在单击邮件中的“验证按钮”后,它直接登陆登录页面而无需验证。我想验证用户并将令牌发送到验证 API。我不知道该怎么做。

【问题讨论】:

    标签: javascript angularjs node.js jwt


    【解决方案1】:

    使用 node jwt 模块来解决你的问题。 当用户登录时,然后为用户创建令牌

    var token = jwt.sign(user, app.get('superSecret'), { expiresIn: '1440m' // 24 小时后过期 });

    然后在每次用户尝试访问任何 url 创建中间件时发送带有响应的令牌,该中间件将验证用户令牌是否有效。

        /* Middle-ware to verify toke */
        apiRoutes.use(function(req, res, next) {
        // check header or url parameters or post parameters for token
        var token = req.body.token || req.query.token || req.headers['x- access-token'];
      // decode token
      if (token) {
        // verifies secret and checks exp
        jwt.verify(token, app.get('superSecret'), function(err, decoded) {      
          if (err) {
            return res.json({ status: 102, message: 'Failed to authenticate token.' });    
          } else {
            // if everything is good, save to request for use in other routes
            req.decoded = decoded;    
            next();
          }
        });
      } else {
        // if there is no token
        // return an error
        return res.status(403).send({ 
            success: false, 
            message: 'No token provided.' 
        });
    
      }
    });
    

    【讨论】:

    • 我需要它来注册而不是登录。我需要发送token来验证api进行验证
    • 当用户使用不同的 superSecret 值注册时生成另一个令牌 var token = jwt.sign(admin, app.get('superSecret'), { expiresIn: '1440m' // 24 小时后过期 } );然后创建中间件以在注册时使用相同的 superSecret 来检查此令牌值。
    • 这是节点代码,因为我必须使用 angular 只处理前端部分
    • 在后端,您正在使用 nodejs。发送带有验证电子邮件链接的令牌。所有这些都是节点的东西。
    • 是的,我确实收到了一封带有“验证您的电子邮件”链接的邮件。但是当我点击它时,它没有验证。它直接登陆登录页面
    猜你喜欢
    • 2017-12-04
    • 1970-01-01
    • 2019-09-27
    • 2017-11-25
    • 2017-02-03
    • 2015-04-28
    • 1970-01-01
    • 2014-07-15
    • 2018-12-28
    相关资源
    最近更新 更多