Я хочу, чтобы в производстве любой пользователь проходил аутентификацию. Поэтому я добавил canActivate.
const routes: Routes= {
{path: 'test', canActivate: [AuthGuard], component: MyComponent}
};
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router, private auth) {
if (!this.auth.isLoggedIn) {
// redirect the user
this.router.navigate(['/login']);
return false;
}
return true;
}
}
Это работает хорошо, однако в процессе отладки я обнаружил, что каждый раз, когда мне приходится входить в систему, это тратит впустую мое время. Поэтому я решил немного изменить свой компонент, в этом случае мне не нужно входить в систему в режиме отладки.
ngOnInit() {
const path = windows.location.hostname;
if (path.includes('localhost')) {
this.processing(); // no login therefore
} else {
this.processing();
}
}
Однако я обнаружил, что даже в режиме отладки (localhost) иногда приходится войти, но иногда нет. Я думаю, что логика c моего условия и может активировать конфликты. Может быть, одна переопределяет другую?
Для получения более подробной информации, когда я запускаю командную строку dotnet run
для запуска приложения, аутентификация работает. Если я запускаю приложение из Visual Studio (нажмите F5), то вход в систему не требуется.
В моем основном приложении. net я использую службу sap. Что-то вроде
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});