第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 JWT 令牌身份驗證中獲取聲明值

如何從 JWT 令牌身份驗證中獲取聲明值

繁華開滿天機 2022-05-21 20:24:00
我已經(jīng)在令牌提供者的 JWT 令牌中設(shè)置了聲明?,F(xiàn)在我想在 API 被命中時通過身份驗證獲得聲明價值。我已經(jīng)檢查了委托人、詳細信息、憑證、權(quán)限,但我沒有收到任何索賠。Claims claims = Jwts.claims().setSubject(authentication.getName());    claims.put(AUTHORITIES_KEY, authorities);    claims.put("userId", userRepo.findUserIdByUsername(authentication.getName()));   return Jwts.builder()            .setSubject(authentication.getName())            .setClaims(claims)            //.claim(AUTHORITIES_KEY, authorities)            .signWith(SignatureAlgorithm.HS512, SIGNING_KEY)            .setIssuedAt(new Date(System.currentTimeMillis()))            .setExpiration(new Date(System.currentTimeMillis() + ACCESS_TOKEN_VALIDITY_SECONDS*1000))            .compact();我想從身份驗證中獲取“userId”聲明或從令牌中獲取聲明值的任何其他方式。
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

這就是我從令牌中讀取聲明的方式


private Claims getAllClaimsFromToken(String token) {

        Claims claims;

        try {

            claims = Jwts.parser()

                    .setSigningKey(SECRET)

                    .parseClaimsJws(token)

                    .getBody();

        } catch (Exception e) {

            LOGGER.error("Could not get all claims Token from passed token");

            claims = null;

        }

        return claims;

    }

我將它用于 JWT


<dependency>

    <groupId>io.jsonwebtoken</groupId>

    <artifactId>jjwt</artifactId>

    <version>0.9.0</version>

</dependency>

編輯1:


添加過濾器以從請求和驗證中獲取令牌


import java.io.IOException;


import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.security.core.context.SecurityContextHolder;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UserDetailsService;

import org.springframework.web.filter.OncePerRequestFilter;


public class TokenAuthenticationFilter extends OncePerRequestFilter {


    protected final Log logger = LogFactory.getLog(getClass());


    private TokenHelper tokenHelper;


    private UserDetailsService userDetailsService;


    public TokenAuthenticationFilter(TokenHelper tokenHelper, UserDetailsService userDetailsService) {

        this.tokenHelper = tokenHelper;

        this.userDetailsService = userDetailsService;

    }



    @Override

    public void doFilterInternal(

            HttpServletRequest request,

            HttpServletResponse response,

            FilterChain chain

    ) throws IOException, ServletException {


        String username;

        String authToken = tokenHelper.getToken(request);


        logger.info("AuthToken: "+authToken);


        if (authToken != null) {

            // get username from token

            username = tokenHelper.getUsernameFromToken(authToken);

            logger.info("UserName: "+username);

            if (username != null) {

                // get user

                UserDetails userDetails = userDetailsService.loadUserByUsername(username);

                if (tokenHelper.validateToken(authToken, userDetails)) {

                    // create authentication

                    TokenBasedAuthentication authentication = new TokenBasedAuthentication(userDetails);

                    authentication.setToken(authToken);

                    SecurityContextHolder.getContext().setAuthentication(authentication);

                }

            }else{

                logger.error("Something is wrong with Token.");

            }

        }

        chain.doFilter(request, response);

    }




}


查看完整回答
反對 回復(fù) 2022-05-21
  • 1 回答
  • 0 關(guān)注
  • 299 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號