AngularJs, прочитайте параметры POST с помощью $ stateProvider, чтобы скрыть их от URL - PullRequest
0 голосов
/ 20 апреля 2020

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

Теперь ... пользователь может использовать вид единого входа, поэтому:

  1. Пользователь нажимает кнопку «войти через стороннего поставщика»
  2. пользователь входит в сторонний клиент
  3. Сторонний сервер запрашивает у моего сервера token для этого пользователь
  4. сторонний клиент перенаправляет пользователя на мою страницу, передавая 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);

но опять же, кажется довольно грязное решение.

спасибо

...