Проблема авторизации Nebular (всегда успешный вход в систему) - ngx-admin
`NbAuthModule.forRoot({стратегия: [ NbPasswordAuthStrategy.setup({имя: 'auth',
token: {
class: NbAuthJWTToken,
key: 'token',
},
baseEndpoint: '/api/',
login: {
alwaysFail: false,
endpoint: 'Login',
method: 'get',
redirect: {
success: '/pages',
failure: '/register',
},
},
register: {
endpoint: 'register',
method: 'post',
},
}),
],
forms: {
login: {
redirectDelay: 0, // delay before redirect after a successful login, while success message is shown to the user
strategy: 'auth', // strategy id key.
rememberMe: false, // whether to show or not the `rememberMe` checkbox
showMessages: { // show/not show success/error messages
success: false,
error: true,
}, // social links at the bottom of a page
},
},
}),
У меня есть Стратегия создания этого пароля для вызова моего проекта Asp.net Web Api. Я также настроил прокси-сервер, как указано ниже.
{"/ api": {"target": " http://localhost:54575/", "secure": false } }
Ожидаемое поведение: я ожидал, что он вызовет мой API и вернет токен авторизации и изменит URL на панель мониторинга, но его URL не меняется.
1 ответ
Вам необходимо вернуть ошибку http 400 для неудачного входа в систему. Не просто безопасный: ложь.
Setup your NbPasswordAuthStrategy in your app.module:
...NbAuthModule.forRoot({
strategies: [
NbPasswordAuthStrategy.setup({
name: 'email',
baseEndpoint: 'auth/',
login: {
endpoint: 'sign-in',
},
register: {
endpoint: 'sign-up',
},
logout: {
endpoint: 'sign-out',
},
token: {
class: NbAuthJWTToken,
key: 'token',
},
}),
],
forms: {
login: {
socialLinks: socialLinks,
},
register: {
socialLinks: socialLinks,
},
},
}).providers,
И ваш компонент входа в систему:
constructor(protected service: NbAuthService) {
}
login(): void {
this.errors = [];
this.messages = [];
this.submitted = true;
this.service.authenticate(this.strategy, this.user).subscribe((result: NbAuthResult) => {
this.submitted = false;
if (result.isSuccess()) {
this.messages = result.getMessages();
} else {
this.errors = result.getErrors();
}
const redirect = result.getRedirect();
if (redirect) {
setTimeout(() => {
return this.router.navigateByUrl('dashboard');
}, this.redirectDelay);
}
this.cd.detectChanges();
});
}
Полный компонент входа в систему: https://github.com/akveo/nebular/tree/master/src/framework/auth/components/login
В навигации вы можете указать, куда вы хотите перейти после успешного входа в систему. В настоящее время это домашняя страница.