如何注入服务来监控认证和存储状态?
How to inject services to monitor authentication and storage status?
我正在使用 Angular.js 通过 Restangular 构建客户端应用程序。
问题是,我使用 wsse header 实现了摘要身份验证,我必须在每次向我的 REST 服务器发出请求时生成它。
我看到 Restangular 提供了一个函数:addFullRequestInterceptor()。
所以现在,我正尝试在我的 RestangularProvider 中使用它来在此文件中配置它 restangular.js :
// Config Restangular
app.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl(applicationConfig.SERVER_URL);
RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
RestangularProvider.addFullRequestInterceptor(
function (element, operation, route, url, headers, params, httpConfig) {
// Here is my header generation.
$http.defaults.headers.common['X-WSSE'] =
TokenHandler.getCredentials(
AuthHandler.authentication.user.username,
AuthHandler.authentication.secret);
return {
element: element,
headers: headers,
params: params,
httpConfig: httpConfig
};
});
});
但是我有一个注入问题,我无法找到 如何注入我的 TokenHandler 服务和我的 AuthHandler 服务 以便能够知道用户是否已经登录或不,如果他有 localstroage 或没有。
感谢您的帮助 ;)
问题在于 .config
阶段的服务,如 AuthHandler
和 TokenHandler
尚未实例化,因此您需要手动实例化它们(及其依赖项) $injector
(可注入 config
块):
app.config(function(RestangularProvider,
$injector,
AuthHandlerProvider,
TokenHandlerProvider) {
var AuthHandler = $injector.instantiate(AuthHandlerProvider.$get);
var TokenHandler = $injector.instantiate(TokenHandlerProvider.$get);
//...
});
我正在使用 Angular.js 通过 Restangular 构建客户端应用程序。 问题是,我使用 wsse header 实现了摘要身份验证,我必须在每次向我的 REST 服务器发出请求时生成它。
我看到 Restangular 提供了一个函数:addFullRequestInterceptor()。
所以现在,我正尝试在我的 RestangularProvider 中使用它来在此文件中配置它 restangular.js :
// Config Restangular
app.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl(applicationConfig.SERVER_URL);
RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
RestangularProvider.addFullRequestInterceptor(
function (element, operation, route, url, headers, params, httpConfig) {
// Here is my header generation.
$http.defaults.headers.common['X-WSSE'] =
TokenHandler.getCredentials(
AuthHandler.authentication.user.username,
AuthHandler.authentication.secret);
return {
element: element,
headers: headers,
params: params,
httpConfig: httpConfig
};
});
});
但是我有一个注入问题,我无法找到 如何注入我的 TokenHandler 服务和我的 AuthHandler 服务 以便能够知道用户是否已经登录或不,如果他有 localstroage 或没有。
感谢您的帮助 ;)
问题在于 .config
阶段的服务,如 AuthHandler
和 TokenHandler
尚未实例化,因此您需要手动实例化它们(及其依赖项) $injector
(可注入 config
块):
app.config(function(RestangularProvider,
$injector,
AuthHandlerProvider,
TokenHandlerProvider) {
var AuthHandler = $injector.instantiate(AuthHandlerProvider.$get);
var TokenHandler = $injector.instantiate(TokenHandlerProvider.$get);
//...
});