Ale*_*eco 2 api rest http alfresco angularjs
我正在创建一个简单的AngularJS应用程序,它使用Alfresco作为提供的REST API的后端.
首先,通过返回token(alf_ticket)的适当服务执行身份验证,并且在成功身份验证后,该令牌必须作为URL参数在后续请求中发送.
就我而言,Alfresco REST API不支持接收令牌作为HTTP头的一部分; 这可能是最好的选择,因为通过配置$ http默认值来解决问题是直截了当的,只提一个我能想到的选项.
在这种情况下,我恐怕只能将alf_ticket每个请求中的令牌作为参数发送到后端,例如:
GET /alfresco/s/api/people/admin/preferences?alf_ticket=TICKET_f79aa9eb2f839cefd1e1c7e4f579379ec06c33ed
Run Code Online (Sandbox Code Playgroud)
我知道$ resource提供了默认参数的机制,但这些是$ resource的每个实例的特定默认值.
到目前为止,我一直在考虑以下方法:
/alfresco/s/api/people/admin/preferences:alf_ticket); 然后通过parameterDefault适当的函数提供从当前会话数据中获取令牌.理想情况下,我会寻找$ resource或$ http的全局配置,类似于配置默认头文件($httpProvider.defaults.headers)的方式,但我担心这两种服务都不提供这样的功能......
使用$ http拦截器.
创建一个工厂函数,重新配置任何URL的请求,只有在设置参数时才将auth令牌添加到参数中:
app.factory('httpRequestInterceptor', function (Auth) {
return {
request: function (config) {
if (Auth.token) {
config.url = URI(config.url).addSearch({'_auth_token':Auth.token}).toString();
}
return config;
}
};
})
Run Code Online (Sandbox Code Playgroud)
(请注意,我使用URI.js来添加参数,因为我在这篇博文之后设计了我的答案,作者也使用了它)
传递$httpProvider到你的config块,并把你的拦截服务到其名称的字符串interceptor数组:
.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
})
Run Code Online (Sandbox Code Playgroud)
在浏览器执行之前,任何$http请求(包括那些请求$resource)都将被截获并修改(如果适用).
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |