Как получить токен ?, - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть служба (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, чтобы фильтровать что-то с токеном пользователя, что-то вроде этого :

    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;  
    }
...