我对AngularJs很新,有些事情我还不知道。实际上很多。
我的浏览器中出现此错误:
Unknown provider: URLsProvider <- URLs <- AuthenticationInterceptor <- $http <- $templateFactory <- $view <- $state
当我转到Angularjs帮助页面here时,我得到的解释是我错过了或在我的代码中错误地注入了。
我从互联网上获得了这个代码,它应该做的就是成为一个拦截器,每当我打电话时都会添加jwt令牌来请求标题。
以下是代码:
export default function(AuthenticationService, URLs) {
let service = this;
service.request = function(config) {
let token = AuthenticationService.getToken();
if(config.url.indexOf(URLs.API) === 0 && token) {
config.headers.Authorization = "Bearer " + token;
}
return config;
};
}
这是服务:
class AuthenticationService {
constructor($window) {
this.$window = $window;
this.tokenKey = "examinoJwtToken";
}
saveToken(token) {
this.$window.localStorage[this.tokenKey] = token;
}
getToken() {
return this.$window.localStorage[this.tokenKey];
}
login(token) {
this.saveToken(token);
}
logout() {
this.$window.localStorage.removeItem(this.tokenKey);
}
parseJwt(token) {
var base64Url = token.split(".")[1];
var base64 = base64Url.replace("-", "+").replace("_", "/");
return JSON.parse(this.$window.atob(base64));
}
isAuthenticated() {
var token = this.getToken();
if(token) {
var params = this.parseJwt(token);
return Math.round(new Date().getTime() / 1000) <= params.exp;
}
else {
return false;
}
}
}
在app.js中我添加了这个:
import AuthenticationService from "./shared/services/AuthenticationService";
import AuthenticationInterceptor from "./shared/interceptors/AuthenticationInterceptor";
导出默认的AuthenticationService; AuthenticationService是一种定义所有功能的服务。喜欢:getToken,saveToken,login等等。
我需要注入此服务吗?或者你可能看到其他一些问题?这是什么解决方案?我知道这可能是微不足道的事情,但我以前从未接触过AngularJs,所以我需要寻求帮助和额外的解释。