如何实现token提取全参

 // 获取结构体成员大小 #define GET_MEMBER_SIZE(type, member) sizeof(((type*)0)->member) // 获取结构体成员偏移量 #define GET_MEMBER_OFFSET(type, member) ((size_t)(&(((type*)0)->member))) typedef struct _test_struct0 { char x; char y; char z; }test_struct0; typedef struct _test_struct1 { char a; char c; short b; int d; ; }test_struct1; int main(int arc, char *argv[]) { printf("GET_MEMBER_SIZE(test_struct1, a) = %ld\n", GET_MEMBER_SIZE(test_struct1, a)); printf("GET_MEMBER_SIZE(test_struct1, c) = %ld\n", GET_MEMBER_SIZE(test_struct1, c)); printf("GET_MEMBER_SIZE(test_struct1, b) = %ld\n", GET_MEMBER_SIZE(test_struct1, b)); printf("GET_MEMBER_SIZE(test_struct1, d) = %ld\n", GET_MEMBER_SIZE(test_struct1, d)); printf("GET_MEMBER_SIZE(test_struct1, e) = %ld\n", GET_MEMBER_SIZE(test_struct1, e)); printf("test_struct1 si

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 可以很方便地实现 Token 鉴权,具体可以按照以下步骤来实现: 1. 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> ``` 2. 创建一个 TokenUtil 工具类,用于生成 Token 和解析 Token: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Date; @Component public class TokenUtil { @Value("${jwt.secret}") private String secret; @Value("${jwt.expiration}") private Long expiration; // 生成 Token public String generateToken(String username) { Date now = new Date(); return Jwts.builder() .setSubject(username) .setIssuedAt(now) .setExpiration(new Date(now.getTime() + expiration * 1000)) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } // 解析 Token public Claims getClaimsFromToken(String token) { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); } } ``` 3. 创建一个 TokenInterceptor 拦截器,用于拦截需要鉴权的请求: ```java import io.jsonwebtoken.Claims; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class TokenInterceptor implements HandlerInterceptor { @Autowired private TokenUtil tokenUtil; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Authorization"); if (token == null) { throw new RuntimeException("未登录,请先登录"); } Claims claims = tokenUtil.getClaimsFromToken(token); String username = claims.getSubject(); if (username == null) { throw new RuntimeException("未登录,请先登录"); } return true; } } ``` 4. 在需要鉴权的接口上添加 @Interceptor 注解,指定 TokenInterceptor 拦截器: ```java @RestController public class UserController { @GetMapping("/user") @Interceptor(TokenInterceptor.class) public User getUser() { return userService.getUser(); } } ``` 以上就是 Spring Boot 实现 Token 鉴权的基本步骤。当然,具体实现还需要根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值