Я работаю с JavaEE 8 на OpenLiberty 18.0.0.2.
Я хочу понять, запрос уже аутентифицирован или нет.
этот код не работает:
@WebFilter(urlPatterns = {"/panel/*"})
public class IndexFilter implements Filter {
@Inject
private SecurityContext securityContext ;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println(((HttpServletRequest) request).getUserPrincipal()); //not work : receive null
System.out.println(securityContext.getCallerPrincipal().getName()); // not work : receive UNAUTHENTICATED
// ? How can find user principal ?
chain.doFilter(request,response);
}
}
, и это мой метод входа:
public void login() throws IOException {
Credential credential = new UsernamePasswordCredential(username, password);
AuthenticationStatus status = securityContext.authenticate(
getHttpServletRequest(),
getHttpServletResponse(),
withParams()
.credential(credential)
.rememberMe(true)
);
if (status.equals(SUCCESS)) {
facesContext.getExternalContext().redirect("/panel/index.xhtml");
}
}
Как определить пользователя на фильтре?