7
我目前正在開發一個使用Jersey JAX-RS作爲後端和AngularJS作爲前端的應用程序;我需要一種認證,所以每次發送一個應該由後端驗證的令牌。爲此,我決定創建一個Jersey過濾器來查找該令牌,然後調用我的AuthenticateService來檢查用戶是否可以進行身份驗證。 然後授權由@RolesAllowed
註釋管理。在澤西島過濾器中注入EJB
這裏是我的問題:我不能注入一個EJB澤西過濾器內,strangly因爲它很好的資源。但隨着該濾波器,服務始終保持空
任何想法如何欺騙它? 感謝
過濾代碼:
@Provider
@Priority(Priorities.AUTHORIZATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@EJB(name=AuthenticationService.LOOKUP_NAME)
private AuthenticationService authService;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
/**
* Get headers parameters
*/
String userIdStr = requestContext.getHeaderString(SecurityConsts.HEADER_ID_PARAMETER);
int userId = 0;
if(userIdStr != null && !userIdStr.isEmpty()) {
userId = Integer.parseInt(userIdStr);
}
String securityToken = requestContext.getHeaderString(SecurityConsts.HEADER_TOKEN);
User user = null;
/**
* If a token is present, try to authenticate the user
*/
if(securityToken != null && !securityToken.isEmpty()) {
// NullPointerException happens here
user = authService.authenticateWithToken(userId, securityToken);
}
/**
* Set correct security context
*/
requestContext.setSecurityContext(new ConfiguratorSecurityContext(user));
}
}
用'訣竅InitialContext'解決我的問題,謝謝! –