Я пытаюсь внедрить 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-страницы?