my AngularJS приложение использует $ stateProvider для навигации по страницам. Я хотел бы получить некоторые параметры, не видимые из URL, поскольку они были параметрами POST.
Я приведу пример:
У меня есть что-то подобное для определения страницы:
.state('app.company.details', {
url: 'company/:company_id?currentTab', // currentTab is a url param
templateUrl: 'company.html',
controller:'CompanyCtrl',
controllerAs:'cmpCtrl'
})
Итак, если я хочу открыть эту страницу, на вкладке 4 URL будет ://company/0001?currentTab=4
Теперь ... пользователь может использовать вид единого входа, поэтому:
- Пользователь нажимает кнопку «войти через стороннего поставщика»
- пользователь входит в сторонний клиент
- Сторонний сервер запрашивает у моего сервера
token
для этого пользователь - сторонний клиент перенаправляет пользователя на мою страницу, передавая
token
Я не хочу, чтобы пользователь видел токен в URL (? token = xxxxxxx) что касается currentTab
, даже если он зашифрован / сжат, потому что он может разделить этот URL. Я хочу передать этот токен скрытым способом, чтобы мой клиент мог зарегистрировать этого пользователя на моем сервере с этим токеном.
Моя идея заключалась в том, чтобы поместить это в CompanyCtrl:
var token_from_3dparty = <?php echo ($_POST["token"]); ?>
$http.post("https://myserver.com/login", {token : token_from_3dparty})
но мне это кажется странным, и я бы предпочел избегать PHP.
или ... просто очистить параметры URL-адреса из Angular, прочитав значение
var token = $stateParams.token;
$location.search('token', null);
но опять же, кажется довольно грязное решение.
спасибо