【发布时间】: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