【发布时间】:2016-01-13 18:33:07
【问题描述】:
我正在处理令牌,并且对于每个 HTTP 请求,令牌都会添加到标头中,以便服务器可以判断用户是否已登录。
因此,我无法重定向到特定 URL 并检查令牌,因为令牌不会添加到标题中。
是否可以从 http 请求加载新的 HTML 页面?每次服务器响应时,我都会得到 HTML 页面的代码。我认为 Angular 不会重新加载新的传入页面。
编辑:这是一些代码
添加到每个 http 请求的代码
// ===================================================
// application configuration to integrate token into requests
// ===================================================
.factory('AuthInterceptor', function($q, $location, AuthToken) {
var interceptorFactory = {};
// this will happen on all HTTP requests
interceptorFactory.request = function(config) {
// grab the token
var token = AuthToken.getToken();
// if the token exists, add it to the header as x-access-token
if (token) {
config.headers['x-access-token'] = token;
}
return config;
};
// happens on response errors
interceptorFactory.responseError = function(response) {
// if our server returns a 403 forbidden response
if (response.status == 403) {
AuthToken.setToken();
$location.path('/login');
}
// return the errors from the server as a promise
return $q.reject(response);
};
return interceptorFactory;
});
我正在使用 ui 路由。我有网站的前端和后端。因此,当用户从前端登录时,front-end.html 消失,而 back-end.html 被加载。但是 angular 只是读取 back-end.html 代码。
// function to handle login form
vm.doLogin = function() {
vm.processing = true;
//clear the error
vm.error = '';
Auth.login(vm.loginData.email, vm.loginData.password)
.success(function (data) {
vm.processing = false;
// if a user successfully logs in, redirect to main application
if (data.success)
return $http.get('/account');
//Here is where a user logs in and i redirect them to the backend of the site. But the response is the HTML code of the page. I want that page to load.
else
vm.error = data.message;
});
};
【问题讨论】:
-
您的代码在哪里?你是什么意思令牌不会被添加到标题?您是否存储令牌客户端并将其添加到
$http.defaults.headers.common? -
已更新相关代码
-
@StevenR 您是否尝试修复跨站点脚本?
-
@pratikwebdev 不,我实际上是在尝试将我的网站分成 2 个不同的部分。前端和后端,但后端有令牌检查以查看用户是否登录以继续。所以我不能直接去后端 URL 因为那他们就没有令牌了。
-
@StevenR 您可以尝试将
token保存在会话变量中而不是request header并在后端验证相同。我的 2 美分。
标签: javascript html angularjs