Претензии JWT Parser - PullRequest
       6

Претензии JWT Parser

0 голосов
/ 29 января 2019

У меня проблема с утверждениями, я хочу сгенерировать токен с разрешениями пользователей для перехвата всех маршрутов и блокировки, если не авторизован.

Я использую Jwt clams для аутентификации.

Myвалидатор

  public User validate(String token) {
    User user = null;

    try {
        Claims body = Jwts.parser()
                .setSigningKey(JwtGenerator.getSecret())
                .parseClaimsJws(token)
                .getBody();

        user = new User();
        user.setUsername(body.getSubject());
        user.setId(Integer.parseInt((String) body.get("userID")));
        user.setPermissions((ArrayList<Permission>) body.get("permission"));}

мой генератор

public String generate(User user) {

    Claims claims = Jwts.claims()
            .setSubject(user.getUsername());
    claims.put("userID", String.valueOf(user.getId()));
    claims.put("changePassword", user.isChangePass());
    claims.put("permission", user.getPermissions()); //List<Permission> 
    return Jwts.builder()
            .setClaims(claims).signWith(SignatureAlgorithm.HS512, SECRET).compact();
}

повторение

user.getPermissions().forEach(permission -> System.out.println(permission.getRoute()));

ОШИБКА

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.bestgame.model.Permission (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.bestgame.model.Permission is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @6b8da817)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at com.bestgame.security.AuthorizationUser.checkPermissions(AuthorizationUser.java:22)
at com.bestgame.security.BgsAuthenticationTokenFilter.successfulAuthentication(BgsAuthenticationTokenFilter.java:41)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:240)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...