#angular
#angular
Вопрос:
Кто-нибудь может объяснить мне этот код:
this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
Что делает этот код. Что такое returnUrl
? Я искал документы Angular, но не смог найти больше об этом, где это рассказано.
Редактирование добавлено после получения такой большой помощи и основано на моем понимании :: returnUrl — это определенный программистом запрос, который returnUrl используется для того, чтобы пользователь переходил к URL, к которому он пытался получить доступ после входа в систему. Например, сначала пользователь может пытаться перейти к панели мониторинга, но ему это не будет разрешено, поскольку он защищен от авторизации. но при входе в систему параметры запроса returnUrl используются, чтобы помочь пользователю вернуться к панели мониторинга.
Комментарии:
1. это параметр запроса. его сказать: «Браузер, пожалуйста, перейдите к пользователю
/login?returnUrl=<state.url content>
»
Ответ №1:
returnUrl
не задокументировано в документации Angular, поскольку оно определено как queryParam
. Это может быть просто все, что вы там передаете.
Затем он будет частью URL-адреса, например:
foo://example.com:8042/over/there?returnUrl=login
_/ ______________/_________/ _____________/
| | | |
scheme authority path query
В вашем случае: он будет использоваться в качестве ссылки, куда направлять пользователя, когда человек (не) может войти в систему. state.url
скорее всего, это строка, и queryParams
они обрабатываются как строки, поэтому добавление returnUrl=true
приведет к stringified true: 'true'
.
Другой пример:
// Navigate to /results?page=1
this.router.navigate(['/results'], { queryParams: { page: 1 } });
Здесь будут показаны только результаты первой страницы. Смотрите Документацию Angular о параметрах запроса внутри UrlCreationOptions.
Комментарии:
1. но как это работает, когда я сообщаю returnUrl как true. Не могли бы вы, пожалуйста, просветить меня
2. что такое state.url
3. @somanraj Я обновил свой ответ. См. раздел «В вашем случае…»
Ответ №2:
Скорее всего, компоненту, который загружается /login
после успешного входа в систему, может потребоваться перенаправить пользователя на URL, указанный в returnUrl
.
A redirectUrl
обычно используется на экранах входа в систему в качестве маршрута перенаправления после успешного входа в систему.
Итак, рассмотрим это:
В вашем приложении много разных экранов, которые загружаются в результате навигации по множеству разных маршрутов. Некоторые из этих маршрутов могут быть защищены, и пользователю может потребоваться войти в систему, прежде чем он сможет получить доступ к этим маршрутам.
Таким образом, некоторая логика (обычно в Route Guard) может проверять, вошел ли пользователь в систему или нет, при попытке перейти к этим маршрутам. И когда пользователь не вошел в систему, они могут перенаправить пользователя на /login
маршрут, который загружает LoginComponent
. На этом этапе вам может потребоваться знать маршрут, по которому пользователь пытался перейти. И вы можете LoginComponent
сообщить об этом, передав его как queryParam
.
Комментарии:
1. что означает returnurl false
2. где это внутри angular framework определено @SiddAjmera
3. @somanraj
returnUrl
не является чем-то специфичным для Angular. Это просто еще один параметр запроса, который вы можете указать маршрутизатору Angular. Считайте это своего рода метаданными, которые маршрутизатор Angular мог бы предоставить компоненту, чтобы компонент помнил о маршруте, по которому пользователь намеревался перейти.4.
returnUrl
не имеет ничего общего с angular, а только и только с приложением, в котором это использовалось5. При
router.navigate
вызовеqueryParams
опция может принимать любой объект.returnUrl
был просто случайным образом выбран тем, кто написал фрагмент кода