У меня есть служба (JAX-RS) под названием: AuthenticationService, в которой я генерирую токен, но я хочу использовать этот токен вне этого класса?
private Student student;
@POST
@Consumes("application/json")
@Produces("application/json")
public Response authenticateUser(Credentials credentials) {
try {
String username = credentials.getUsername();
String password = credentials.getPassword();
//System.out.println("credentials " + username);
// Authenticate the user using the credentials provided
Student student = authenticate(username, password);
// Issue a token for the user
String token = issueToken(username);
//save token into db
Calendar tokenExpires = Calendar.getInstance();
tokenExpires.add(Calendar.MINUTE, 2);
student.setToken(token);
student.setTokenExpires(tokenExpires.getTime());
studentMethods.updateUser(student);
// Return the token on the response
return Response.ok(token).build();
} catch (Exception e) {
return Response.status(Response.Status.FORBIDDEN).build();
}
}
Метод для генерации токена:
private String issueToken(String username) {
// Issue a token (can be a random String persisted to a database or a JWT token)
// The issued token must be associated to a user
// Return the issued token
Random random = new SecureRandom();
String token = new BigInteger(130, random).toString(32);
return token;
}
То, что я хочу, это как я могу получить этот токен, потому что я хочу использовать его вне этого класса, я хочу использовать его в запросе к классу UserService, чтобы фильтровать что-то с токеном пользователя, что-то вроде этого : Должен ли я создать экземпляр AuthentificationService?
public List<Book> returnBooks() {
TypedQuery<Book> query = em.createQuery("SELECT s.books from Student s where s.token = :token", Book.class);
query.setParameter("token", student.getToken());
List<Book> resultList = query.getResultList();
return resultList;
}