Я использую шаблон ABP Angular. Я ищу способ перенаправить пользователя на URL-адрес, который он запросил изначально после аутентификации. Например, если пользователь поместил localhost: 4200 / app / plan / 1, который разрешает только аутентифицированных пользователей, тогда фреймворк перенаправляет пользователя на страницу входа, и когда пользователь проходит аутентификацию, автоматически перенаправляется на адрес, запрошенный ранее. В данный момент пользователь перенаправляется на домашний компонент
Почему initialUrl в login.service.ts всегда «localhost: 4200»?
var initialUrl = UrlHelper.initialUrl;
if (initialUrl.indexOf('/login') > 0) {
initialUrl = AppConsts.appBaseUrl;
}
location.href = initialUrl;
@aaron, есть идеи, почему для аутентификации пользователь сначала перенаправляется на localhost: 4200, а затем на страницу входа? Вот почему intitialUrl всегда localhost: 4200 и потерял фактический запрошенный URL.





Попробуйте этот код
import {Location} from '@angular/common';
constructor(private location :Location){}
loginAction(){
//Do login request
//Login Success callback
this.location.back();
//Login Failed callback
Do nothing
}
который все еще перенаправляет меня на localhost: 4200!
ДЛЯ УГЛОВОГО 7+
На самом деле, начиная с Angular 7.2, нет необходимости использовать службу для сохранения предыдущего URL-адреса. Вы можете просто использовать объект состояния, чтобы установить последний URL-адрес перед ссылкой на страницу входа. Вот пример сценария входа в систему.
@Component({ ... })
class SomePageComponent {
constructor(private router: Router) {}
checkLogin() {
if (!this.auth.loggedIn()) {
this.router.navigate(['login'], { state: { redirect: this.router.url } });
}
}
}
@Component({...})
class LoginComponent {
constructor(private router: Router) {}
backToPreviousPage() {
const { redirect } = window.history.state;
this.router.navigateByUrl(redirect || '/homepage');
}
}
----------------
Кроме того, вы также можете передать данные в шаблоне:
@Component({
template: '<a routerLink = "/some-route" [state] = "{ redirect: router.url }">Go to some route</a>'
})
class SomePageComponent {
constructor(public router: Router) {}
}
Вам достаточно нажатия кнопки возврата с помощью кода, не так ли?