Sails.js:重定向后检索URL参数

时间:2014-03-25 07:34:17

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

我试图在我的登录系统中实施CAS,但我仍然坚持如何检索"票#34;。基本上,票证作为参数在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页面的每一行?

1 个答案:

答案 0 :(得分:2)

您需要创建索引路径,将其指向控制器操作,然后在该操作中检索令牌。例如,在/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);

}
假设您在服务器上正确设置了SSL,

https://localhost:1337/将指向该代码!