【问题标题】:Sails.js: Retrieving URL parameter after redirectSails.js:重定向后检索 URL 参数
【发布时间】:2014-05-02 21:54:22
【问题描述】:

我正在尝试在我的登录系统中实现 CAS,但我不知道如何检索“票证”。基本上,票在 URL 中作为参数返回,但我不知道如何解析它。

这是我尝试的代码:

login: function(req, res) {
  if (req.session.authenticated) {
    res.redirect('/dashboard');
  } else {
    var https = require('https');
    var url = require('url');

    var cas_url = 'https://auth-test.test.edu';
    var login_service = '/cas/login';
    var validation_service = '/cas/validate';
    var service = 'https://localhost:1337';

    res.redirect(cas_url + login_service + '?service=' + service);
    console.log(req.headers);
  }
}

重定向到我指定的 URL 后,CAS 服务器重定向回(带有示例票证): https://localhost:1337/?ticket=ST-10247-Qn0BuiSHob1dxcjODDku-cas-t1

关于如何优化我的代码或以某种方式检索票证的任何想法?谢谢!

编辑: 现在进行验证,请参阅下面对所选答案的评论:

index: function(req, res) {
  var ticket = req.param('ticket');

  if (req.session.authenticated) {
    res.redirect('/dashboard');
  } else if (ticket) {
    var https = require('https');
    var options = {
      cas_url: 'https://auth-test.berkeley.edu',
      login: '/cas/login',
      validate: '/cas/validate',
      service: 'http://localhost:1337'
    };
    // redirect to validate URL
    res.redirect(options.cas_url + options.validate 
      + '?service=' + options.service + '&ticket=' + ticket);
  } else {
    res.view({
      title: 'Home'
    });
  }
}

如果验证通过正文将有两行: yes username

如果验证不通过,HTML 将只显示一行: no

如何解析显示的 HTML 页面的每一行?

【问题讨论】:

    标签: javascript node.js authentication cas sails.js


    【解决方案1】:

    您需要创建一个索引路由,将其指向一个控制器操作,并在该操作中检索令牌。例如,在/config/routes.js 中,添加:

    '/': 'HomeController.index'
    

    然后在/api/controllers/HomeController:

    index: function (req, res) {
    
       // req.param will contain any route params, body params or
       // query string params
       var ticket = req.param('ticket');
    
       return res.send("The ticket is: " + ticket);
    
    }
    

    https://localhost:1337/ 将指向该代码,假设您已在服务器上正确设置 SSL!

    【讨论】:

    • 谢谢!如果我需要验证票证,我必须再次将其重定向到验证 URL,该 URL 只会在空白 HTML 页面上显示“是”或“否”。如何解析 HTML 页面以检索“是”或“否”?上面已编辑以包含代码示例。
    • 抱歉,澄清一下:如果验证通过body会有两行:yes username 如果验证不通过,HTML只会显示一行:no
    • 这似乎是一个单独的问题,最好作为一个单独的问题提出......
    猜你喜欢
    • 2019-12-11
    • 2017-02-24
    • 2013-08-09
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多