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

标签 javascript node.js authentication cas sails.js

我正在尝试将 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'
    });
  }
}

如果验证通过,body中会有两行: 用户名

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

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

最佳答案

您需要创建一个索引路由,将其指向 Controller 操作,并检索该操作中的 token 。例如,在 /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!

关于javascript - Sails.js:重定向后检索 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628089/

相关文章:

javascript - 如何从输入字段获取值并写入json文件?

javascript - Node.js : Why can't I output the create value in function()

node.js - 使用变量时的 Sequelize 问题

javascript - 弹出窗口阻止 chrome 中的 gdrive 授权

javascript - 淡入前预对焦输入框

javascript - javascript 中的 setTimeOut() 函数是什么?

javascript - 如何将两个 div 添加到 jQuery UI 的对话框小部件中

node.js - 我应该如何使用 MEAN 堆栈进行后端设计?

authentication - 调用 CouchDB 的 _session 总是返回 200

android - 谷歌加登录getIdToken返回null