我在前端使用了AngularJS,routeprovider随之而来。我以前不需要处理下载,因此提供程序的性能没有问题,但是现在我在处理设置中的下载链接时遇到了麻烦。
这是情况。 routeprovider的默认路由重定向到 koti.html ,我无法对下载链接进行硬编码,因为它是动态创建的。因此,下载链接会将用户重定向到首页。
我能够成功使用没有井号标签前缀的链接,但是在这种情况下,我的身份验证拦截器不会触发并将我的身份验证令牌包含在请求中。
可以通过两种方式解决问题:
哪种方法更好,我应该进行哪些更改才能使其正常工作?
这是由于我最近的测试而现在带有井号的下载网址:
<a target="_self" href="https://www.example.com:8888/#/downloads/public/download.txt">
这是我的路线提供者:
.config(['$routeProvider', '$locationProvider', '$httpProvider', function($routeProvider, $locationProvider, $httpProvider){
$locationProvider.hashPrefix('');
$httpProvider.interceptors.push('authInterceptorService');
$routeProvider
.when('/', {
templateUrl: 'koti.html',
controller: 'mainCtrl'
})
.when('/testi', {
templateUrl: 'testi.html',
})
.when('/logout', {
templateUrl: 'logout.html',
})
.when('/login', {
templateUrl: 'login.html',
})
.when('/haut', {
templateUrl: 'haut.html',
})
.when('/koti', {
templateUrl: 'koti.html',
})
.when('/loki.html', {
templateUrl: 'loki.html',
})
.when('/raportointi', {
templateUrl: 'raportointi.html',
})
.when('/tulosraportti',{
templateUrl: 'tulosraportti.html',
})
.when('/opiskelijat',{
templateUrl: 'opiskelijat.html',
})
.when('/pk', {
templateUrl: 'pk.html',
})
.when('/varaushaku',{
templateUrl:'varaushaku.html',
})
.otherwise({
redirectTo: '/koti'
});
}])
这是我的身份验证拦截器服务:
.factory('authInterceptorService', ['$q', '$window', '$localStorage', function($q, $window, $localStorage){
return {
'request': function (config){
config.headers = config.headers || {};
try{
if ($localStorage.user.accessToken) {
config.headers.Authorization = 'bearer ' + $localStorage.user.accessToken;
}
return config;
}catch(err){
return config;
}
},
'response' : function(response){
headers = response.headers();
if(headers.tokenexpired !== 'false' && typeof headers.tokenexpired !== "undefined"){
console.log("Expired");
delete $localStorage.user
window.location = "/";
}
return response
},
'responseError': function(responseError){
if(responseError.data.tokenstatus === "expired"){
delete $localStorage.user
window.location = "/";
}
else if(responseError.status === 401 || responseError.status === 403) {
console.log("forbidden");
delete $localStorage.user
window.location = "/";
} else {
window.location = "/";
}
return $q.reject(responseError);
}
};
}])