我尝试在this tutorial之后使用auth0实现访问管理。当我使用身份验证保护程序访问受保护的路由时,它工作得很好,但是当我直接登录时,我将重定向到以下网址:
我希望根路径http://localhost:4200符合预期的行为。
我检查了repo of the tutorial以确认我的代码,但没有发现任何特殊之处。也许您有什么投入可以解决这个问题?
在我的代码下面:
auth.service.ts
export class AuthService {
/ ... /
handleAuth() {
// When Auth0 hash parsed, get profile
this.auth0.parseHash((err, authResult) => {
if (authResult && authResult.accessToken) {
window.location.hash = '';
this.getProfile(authResult);
} else if (err) {
this.clearRedirect();
this.router.navigate(['/']);
console.error(`Error authenticating: ${err.error}`);
}
});
}
private getProfile(authResult) {
this.loggingIn = true;
// Use access token to retrieve user's profile and set session
this.auth0.client.userInfo(authResult.accessToken, (err, profile) => {
if (profile) {
this.setSession(authResult, profile);
this.redirect();
} else if (err) {
console.warn(`Error retrieving profile: ${err.error}`);
}
});
}
private redirect() {
const redirect = decodeURI(localStorage.getItem('authRedirect'));
const navArr = [redirect || '/'];
this.router.navigate(navArr);
// Redirection completed; clear redirect from storage
this.clearRedirect();
}
据我对本教程的理解,第const navArr = [redirect || '/'];
行应导航到存储的重定向URL或主页。但就我而言,当我直接登录而不是首页时,它重定向到http://localhost:4200/null
。
预先感谢您的帮助。
答案 0 :(得分:0)
问题在于您的本地存储对象authRedirect
可以为空,因此用户可以重定向到http://localhost:4200/null
您应检查该值是否为null,并在该页面上将用户重定向到首页(/
)。
private _redirect() {
var redirect = localStorage.getItem('authRedirect') && decodeURI(localStorage.getItem('authRedirect'));
if (!redirect || redirect == null)
{
//redirect is null so set route to homepage
redirect = "/";
}
const navArr = [redirect || '/'];
this.router.navigate(navArr);
// Redirection completed; clear redirect from storage
this._clearRedirect();
}
答案 1 :(得分:-1)
我找到了一种解决方法,但问题并未得到真正解决:
net:
http:
enabled: true
JSONPEnabled: true
RESTInterfaceEnabled: true