从android手机发出qr代码验证请求后,从expressjs重定向浏览器窗口

时间:2016-05-14 16:24:19

标签: node.js authentication express socket.io qr-code

  1. Android应用程序是使用离子框架开发的。
  2. 我的Android手机上有经过身份验证的用户,使用存储在本地存储中的 jwt令牌
  3. 我有一个Web应用程序,用于在用户从他们的Android应用程序扫描qr代码时对用户进行身份验证。
  4. 从android手机成功扫描。我使用 jwt令牌(使用$ httpProvider在req.headers.authorization上设置) qr扫描代码对服务器进行ajax调用。 / strong>
  5.   

    Android(Ionic Framework)app ajax调用代码

    $scope.scanqr = function () {
      cordova.plugins.barcodeScanner.scan(
        function (result) {
          $http({
            url:'http://localhost:3000/',
            method:'POST',
            data:{
              //qr code result.text
              unique: result.text
            }
          })
            .success(function () {
              alert("Authenticated in WebApp");
            });
        },
        function (error) {
          alert("Scanning failed.Try Again");
        }
      );
    };
    
      

    http://localhost:3000/上运行的服务器代码这是我收到请求并处理它的路由。

    router.post('/', function(req, res) {
        if (req.headers.authorization && req.body.unique) {
            Code.findOne({
                unique:req.body.unique
            }, function (err,code) {
                if(code){
                    var query = Code.remove({unique: req.body.unique});
                    query.exec();
                    var token = req.headers.authorization;
                    req.session.token = token;
                    res.cookie('auth',token);
                    res.redirect('/dashboard');
                }else{
                    res.redirect('/');
                }
            })
        }
    });
    

    我知道重定向不会发生,因为请求是由电话而不是浏览器发出的。有没有办法重定向浏览器?

      

    我通过发出令牌并将其保存在浏览器本地存储中来尝试 socket.io 。但缺点是我将令牌发送给所有人。如果使用webapp打开了多个浏览器,则所有窗口都经过身份验证,我也无法发送到特定的浏览器,因为我不知道请求者的任何细节。

         

    这个问题是否有任何可能的解决方案?

0 个答案:

没有答案