получить текущие данные для входа в систему с помощью весенней загрузки и angular 8 - PullRequest
0 голосов
/ 01 мая 2020

Я могу успешно войти в систему с помощью весенней загрузки и angular 8, но я хочу отобразить детали (например, имя пользователя, имя, фамилия и т. Д. c) для входа в систему, чтобы автоматически отображаться при входе в систему, поэтому я может выполнять другие функции только для указанного пользовательского сеанса c.

ниже - мой контроллер аутентификации

   @RequestMapping(value = "/generate-token", method = RequestMethod.POST)
    public ApiResponse<AuthToken> register(@RequestBody LoginUser loginUser) throws AuthenticationException {

        authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(loginUser.getUsername(), loginUser.getPassword()));
        final Userss user = userService.findOne(loginUser.getUsername());
        final String token = jwtTokenUtil.generateToken(user);
        return new ApiResponse<>(2, 200, "success",new AuthToken(token, user.getUsername()));
    }`

ниже - мой jwtAuthentication

@Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
        String header = req.getHeader(HEADER_STRING);
        String username = null;
        String authToken = null;
        if (header != null && header.startsWith(TOKEN_PREFIX)) {
            authToken = header.replace(TOKEN_PREFIX,"");
            try {
                username = jwtTokenUtil.getUsernameFromToken(authToken);
            } catch (IllegalArgumentException e) {
                logger.error("an error occured during getting username from token", e);
            } catch (ExpiredJwtException e) {
                logger.warn("the token is expired and not valid anymore", e);
            } catch(SignatureException e){
                logger.error("Authentication Failed. Username or Password not valid.");
            }
        } else {
            logger.warn("couldn't find bearer string, will ignore the header");
        }
        if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {

            UserDetails userDetails = userDetailsService.loadUserByUsername(username);

            if (jwtTokenUtil.validateToken(authToken, userDetails)) {
                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN")));
                authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(req));
                logger.info("authenticated user " + username + ", setting security context");
                SecurityContextHolder.getContext().setAuthentication(authentication);
                String getit = userDetails.getUsername();
                logger.info("=========================================" + getit);
            }
        }

        chain.doFilter(req, res);
    }

также ниже - также мой контроллер

@RequestMapping("/getUserProfile")
        public ApiResponse<Userss> userFront(@RequestBody Principal principal) {
            Userss user = userService.findByUsername(principal.getName());
            String firstName = user.getFirstName();
            String lastName = user.getLastName();
            String username = user.getUsername();

            return new ApiResponse<>(3, HttpStatus.OK.value(), "User fetched successfully.",userService.findOne(username));

        }

А ниже мой логин от angular

login(loginPayload) : Observable<ApiResponse> {
    return this.http.post<ApiResponse>('http://localhost:8060/' + 'token/generate-token', loginPayload);
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...