Неправильная строка запроса при построении плана навигации в aurelia-router - PullRequest
3 голосов
/ 16 мая 2019

Мы используем aurelia-open-id-connect в нашем проекте, и после успешного входа в систему редирект удаляет строку запроса из URL. Я отладил свой путь через aurelia-router и, кажется, что-то нашел. Разве там не следует использовать queryString в redirectInstruction ?

export const buildRedirectPlan = (instruction: NavigationInstruction) => {
  const config = instruction.config;
  const router = instruction.router;
  return router
    ._createNavigationInstruction(config.redirect)
    .then(redirectInstruction => {

      const params: Record<string, any> = {};
      const originalInstructionParams = instruction.params;
      const redirectInstructionParams = redirectInstruction.params;

      for (let key in redirectInstructionParams) {
        // If the param on the redirect points to another param, e.g. { route: first/:this, redirect: second/:this }
        let val = redirectInstructionParams[key];
        if (typeof val === 'string' && val[0] === ':') {
          val = val.slice(1);
          // And if that param is found on the original instruction then use it
          if (val in originalInstructionParams) {
            params[key] = originalInstructionParams[val];
          }
        } else {
          params[key] = redirectInstructionParams[key];
        }
      }
      let redirectLocation = router.generate(redirectInstruction.config, params, instruction.options);

      // Special handling for child routes
      for (let key in originalInstructionParams) {
        redirectLocation = redirectLocation.replace(`:${key}`, originalInstructionParams[key]);
      }

      let queryString = instruction.queryString; 
      // use redirectInstruction.queryString instead?
      if (queryString) {
        redirectLocation += '?' + queryString;
      }

      return Promise.resolve(new Redirect(redirectLocation));
    });
};

I get this incorrect redirect location

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...