我从Hipster generator生成一个app并创建一个新工厂来调用我的服务。
所有现有服务都在标题中使用x-csrf令牌调用,但是当我尝试使用我的工厂制作获取或发布时,我得到错误 401 ,未经授权< /强>
在我的应用配置中,我有这个:
class myMenu(tk.Menu):
def __init__(self, parent):
tk.Menu.__init__(self, parent)
self.listeners = {} #dict to keep listeners
return
def add_event_listeners(self, event, listeners):
if not isinstance(listeners, list):
listeners = [listeners]
if(event in self.events_listeners.keys()):
self.events_listeners[event] += listeners
else:
self.events_listeners[event] = listeners
return
''' some menu components setup including internal events'''
def open_file(self, filename):
''' some internal handling menu '''
self.open_file_handler(filename)
''' broadcast event to registered widgets '''
for listener in self.event_listeners[virt_event]:
listener.event_generate(virt_event, when='tail')
return
这是我的工厂:
//enable CSRF
$httpProvider.defaults.xsrfCookieName = 'CSRF-TOKEN';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRF-TOKEN';
当我执行findAll函数时,我收到此错误:
angular.module('jhipsterApp')
.factory('WalletsService', function ($http) {
return {
findAll: function () {
return $http.get('api/walletslist/').then(function (response) {
return response.data;
});
}
};
});
x-csrf保存在cookie中,但我如何在标题中传递它?
感谢
答案 0 :(得分:1)
查看SecurityConfiguration,/ api / **需要身份验证,因此您的端点也需要它。它不是CSRF问题,只是您必须登录。
如果必须公开api / walletslist,则必须在SecurityConfiguration
中执行此操作.antMatchers("/api/walletslist").permitAll()
警告:订单很重要,请确保您的授权网址与角度服务和REST控制器请求映射相匹配。在一个地方很容易忘记最后的斜线字符。
为什么要使用$ http,为什么不像其他JHipster服务一样使用$ resource?