Я создаю javax.jws.WebService Мне нужно сделать какую-то авторизацию (user + pass). Я на самом деле не хочу проверять каждый метод службы, есть ли у пользователя права вызывать это, потому что это было бы очень грязно.
Существует ли какой-либо фильтр запросов WebService, который мог бы извлекать заголовки HTTP и проверять пользователя, чтобы я мог использовать только некоторые аннотации вместо жестких проверок кода перед каждым методом?
@WebService
public class Data implements IDataService {
@Resource
WebServiceContext wsctx;
@EJB
AccessSB access;
@EJB
IDataService dataService;
@WebMethod
public Response<Data> getData(String something) {
if (!access.hasAccess("getData", wsctx.getMessageContext())) {
return new Response<Data>(Status.ACCESS_DENIED, false);
}
return dataService.getData(something);
}
@WebMethod
public Response<Data> setData(String key, String value) {
if (!access.hasAccess("register", wsctx.getMessageContext())) {
return new Response<Data>(Status.ACCESS_DENIED, null);
}
return dataService.setData(key, data);
}
}
Это пример того, как будет выглядеть мой сервис, но, как вы можете видеть, проверка того, может ли пользователь позвонить, очень грязная.