首页 > 其他分享 >jwt

jwt

时间:2024-09-01 16:25:55浏览次数:2  
标签:return String verify jwt token user public

public class TokenInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       /* MethodHandle methodHandle = handler instanceof MethodHandle ? ((MethodHandle) handler) : null;
        if(methodHandle == null){
              return true;
        }*/
        String token = request.getHeader("token");

        DecodedJWT decode = JWT.decode(token);
        Claim name = decode.getClaim("name");
        System.out.println("TokenInterceptor name:"+name.as(String.class));

        boolean abc = JwtUtil.verify(token, "abc");
        System.out.println("TokenInterceptor abc:"+abc);
        return abc;
    }
}
 //implements WebMvcConfigurer 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        List<String> excludePath = new ArrayList<>();
        excludePath.add("/channel/login");
        //登录
        registry.addInterceptor(tokenInterceptor)
                .excludePathPatterns(excludePath)
                .addPathPatterns("/**");
        //除了登陆接口其他所有接口都需要token验证
        WebMvcConfigurer.super.addInterceptors(registry);

    }
public class JwtUtil {
    
    public static String getToken(User user){
        Map header = new HashMap<>();
        header.put("Content-Type","application/json");
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.SECOND,60);
        String token = JWT.create()
                .withHeader(header)
                .withClaim("name", user.getName())
                .withExpiresAt(calendar.getTime())
                .sign(Algorithm.HMAC256(user.getPass()));
        System.out.println("JwtUtil getToken token:"+token);
        return token;
    }
    
    public static boolean verify(String token,String pass){
        try {

            JWTVerifier require = JWT.require(Algorithm.HMAC256(pass)).build();
            DecodedJWT verify = require.verify(token);
            System.out.println("JwtUtil verify verify:"+verify);
            return true;
        }catch (Exception e){
            return false;
        }
    }
}
@ResponseBody
    @RequestMapping("/login")
    public String login(@RequestBody User user){
        //默认用户登录成功
        //生成token
        String token = JwtUtil.getToken(user);
        user.setToken(token);
        return token;
    }

标签:return,String,verify,jwt,token,user,public
From: https://www.cnblogs.com/leifonlyone/p/18391400

相关文章

  • JWT
    1、介绍JWT是由Header、Payload、Signature拼接组成。JWT的三个部分依次如下。Header(头部):描述JWT的元数据Payload(负载):用来存放实际需要传递的数据Signature(签名):对前两部分的签名,防止数据篡改JWT特点:JWT默认是不加密,但也是可以加密的。生成原始Token以后,可以用密钥再加密一次......
  • Spring Cloud + JWT实现双Token刷新
            在现代微服务架构中,使用JWT(JSONWebToken)进行身份验证和授权已成为一种标准做法。然而,JWT的无状态特性虽然带来了灵活性,但也需要我们在安全性方面多加考虑。为了解决JWT的一些潜在安全问题,比如令牌的有效期和刷新机制,双 Token 刷新策略是一个非常有效的......
  • nginx-lua 使用 jwt 验证
    参考因为不涉及到数据库和其它资源的依赖,jwt本身也是无状态的。因此鉴权服务没有再基于Java或者其它语言来做。而是使用lua脚本对nginx做了一个增强:使用lua脚本来校验token是否有效,无效直接返回401,有效则原样转发。方案实现过程中主要参考了基于OpenResty实现JWT验证,只是遇......
  • .net core使用jwt自动续期
    .netcore使用jwt自动续期       小弟不C才,最近看了下网上的jwt方案,于是自己写了一个简单的jwt方案和大家分享下,希望大家给点意见!      假如有一个读书网站,可以不用登陆就访问,当需要自己写文章的时候就必须登录,并且登录之后如果一段时间内没有访问,则......
  • ASP.Net8 中使用 JWT 鉴权的异常处理
    .Net8中使用JWT鉴权的异常处理自己搭了个学习Demo想用JWT給后端做鉴权,结果一直报一些奇奇怪怪的异常,最主要是和写业务代码不一样,因为用了官方提供的包很难排查出问题所在,这次有点像以前学Spring的时候,也是一点一点摸着石头过河,最后还是同事帮忙看出来问题在哪的。问题1:I......
  • PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用
    PyJWT和python-jose是两个用于处理JSONWebTokens(JWT)的Python库。它们都有助于生成、解码、验证和管理JWT,但它们在功能范围和设计哲学上有一些重要的区别。本篇介绍它们之间的一些差异,以及在项目中使用FastAPI+ python-jose 来处理访问令牌的生成以及一些例子代码供......
  • JWT的一种实现
    网上看到的JWT的一种实现。//c#Hmacsha256protectedStringHMacSha256Hash(Stringkey,Stringmessage){varkeyBytes=Encoding.UTF8.GetBytes(key);using(varhmacsha256=newHMACSHA256(keyBytes))......
  • Gin框架使用jwt
    做个笔记,没有连数据库,没有存redis,只是demopackagemainimport( "errors" "fmt" "log" "net/http" "strings" "time" "github.com/dgrijalva/jwt-go/v4" "github.com/gin-gonic/gin")typ......
  • Django 后端架构开发:JWT 项目实践与Drf版本控制
    ......
  • 5、集成SpringSecurity安全框架---jwt工具类
    token导入依赖<!--jwt--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!--jdk9以后已经移除,使用时需要单独导包--><depen......