精华内容
下载资源
问答
  • Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    参考文章:

    (1)Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证

    (2)https://www.cnblogs.com/ChromeT/p/10932202.html


    备忘一下。


    展开全文
  • springboot token签名

    2019-03-21 11:42:00
    使用JWT(JSON WEB TOKEN)工具,<artifactId>jjwt</artifactId> 生成token方式 package com.travelsky.auto.token; import com.travelsky.config.TokenConfig; import io.jsonwebtoken.*; ...

    使用JWT(JSON WEB TOKEN)工具, <artifactId>jjwt</artifactId>

     

    生成token方式

    package com.travelsky.auto.token;
    
    import com.travelsky.config.TokenConfig;
    import io.jsonwebtoken.*;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.authentication.BadCredentialsException;
    import org.springframework.stereotype.Component;
    
    import java.sql.Date;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    /**
     * token工厂
     */
    @Component
    @Slf4j
    public class TokenFactory {
    
        @Autowired
        private TokenConfig tokenConfig;
    
        /**
         * 生成token
         * @param key
         * @return
         */
        public TokenContent createToken(final String key) {
            final LocalDateTime now = LocalDateTime.now();
            // Claims保存主题信息
            final Claims claims = Jwts.claims().setSubject(tokenConfig.getSubject());
            final String token = Jwts.builder()
                    // 设置信息
                    .setClaims(claims)
                    // 设置主体
                    .setIssuer(tokenConfig.getIssuer())
                    // 设置创建时间
                    .setIssuedAt(Date.from(now.atZone(ZoneId.systemDefault()).toInstant()))
                    // 设置过期时间
                    .setExpiration(Date.from(now.plusMinutes(tokenConfig.getExpiration()).atZone(ZoneId.systemDefault()).toInstant()))
                    // 使用HS512加密
                    .signWith(SignatureAlgorithm.HS512, key)
                    // 生成字符串token
                    .compact();
            return new TokenContent(token, claims);
        }

     

    根据前端取回的token进行验证方式

    package com.travelsky.auto.token;
    
    import com.travelsky.config.TokenConfig;
    import io.jsonwebtoken.*;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.authentication.BadCredentialsException;
    import org.springframework.stereotype.Component;
    
    import java.sql.Date;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    
    /**
     * token工厂
     */
    @Component
    @Slf4j
    public class TokenFactory {
    
        @Autowired
        private TokenConfig tokenConfig;
    /**
         * 验证token
         * @param key 与subject一致
         * @param token 页面传回的token字符串
         */
        void parser(final String key, final String token) {
            try {
                // 验证token
                Jwts.parser().setSigningKey(key).parseClaimsJws(token);
            } catch (UnsupportedJwtException | MalformedJwtException | IllegalArgumentException | SignatureException ex) {
                log.error("不可用Invalid Token", ex);
                throw new BadCredentialsException("验证失败,Token不可用:Invalid token: ", ex);
            } catch (ExpiredJwtException expiredEx) {
                log.info("过期Token is expired", expiredEx);
                throw new ExpiredTokenException("token过期", expiredEx);
            }
        }
    }

     

    token配置类

    package com.travelsky.config;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @Data
    @ConfigurationProperties(prefix = "token")
    public class TokenConfig {
    
        private String issuer;
    
        private Long expiration;
    
        private String subject;
    }

     

    token配置文件

    token:
      issuer: antlord
      expiration: 20
      subject: token

     

    转载于:https://www.cnblogs.com/antlord/p/10283037.html

    展开全文
  • springboot token生成方式

    2020-12-07 15:50:29
    * token秘钥 统一使用的秘钥 */ public static final String SECRET_UNIFORM = "XDD6897!&@#.,?"; /** * token 过期时间: 3天 */ public static final int calendarField = Calendar.DATE; public ...
    /**
         * token秘钥 统一使用的秘钥
         */
        public static final String SECRET_UNIFORM = "XDD6897!&@#.,?";
        /**
         * token 过期时间: 3天
         */
        public static final int calendarField = Calendar.DATE;
        public static final int calendarInterval = 3;
    	  Calendar nowTime = Calendar.getInstance();
            nowTime.add(calendarField, calendarInterval);
            Date expiresDate = nowTime.getTime();
            Map<String, Object> map = new HashMap<>();
            map.put("alg", "HS256");
            map.put("typ", "JWT");
            String tokenKey = tokenType.getType() + userId.toString();
            
    		String token = JWT.create().withHeader(map) // header
                        .withClaim("iss", "Service") // payload
                        .withClaim("aud", "APP")
                        .withClaim("userId", null == userId ? null : userId.toString())
                        .withClaim("type",tokenType.getType())
                        .withClaim("tokenKey",tokenKey)
                        .withArrayClaim("roles", roles)
                        .withIssuedAt(iatDate) // sign time
                        .withExpiresAt(expiresDate) // expire time
                        .sign(Algorithm.HMAC256(SECRET_UNIFORM)); //
    
    
    展开全文
  • springboot token拦截验证

    2019-09-03 17:06:18
    System.out.println("token----------------------"+token); UserPO userPO= redisCacheManager.get(token, UserPO.class); if(userPO==null){ //redis中没有用户信息,返回给前台消息, JsonToResponse....

    网上去查了半天,都不完整,所以这里做了一个初级版本。具体参照谁的给忘记了 ,

    1.写下拦截器

    
    
    @Component
    
    public class LoginInterceptor extends HandlerInterceptorAdapter {
        /**
         * 在请求处理之前进行调用(Controller方法调用之前)
         * 基于URL实现的拦截器
         * @param request
         * @param response
         * @param handler
         * @return
         * @throws Exception
         */
         //这个是redis相关的,没用redis的看下思路就可以了。 
        @Autowired
        RedisCacheManagerImpl redisCacheManager;
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String path = request.getServletPath();
            System.out.println("path---------"+path);
            boolean f= Arrays.asList(AdapterConst.NO_INTERCEPTOR_PATH).contains(path);
            //得到入参
    
            if (f) {
                //不需要的拦截直接过
                return true;
            } else {
                // 获取到token
    
                String token=request.getHeader("token");
                System.out.println("token----------------------"+token);
                UserPO userPO= redisCacheManager.get(token, UserPO.class);
                if(userPO==null){
                //redis中没有用户信息,返回给前台消息,
                    JsonToResponse.objectToResponse("", DateUtil.format(new Date(), Const.TIME_STYLE),
                            new AjaxJson(AjaxJson.FAILED, "999", null, Constants.M_210080001), response, request);
                    return false;
                }
                else{
                    //重置100000S后过期
                   redisCacheManager.set(token,userPO,100000);
                }
            return  true;
            }
        }
    }
    

    2.实现WebMvcConfigurer 不弄这个不生效。

    
    /**
     * 和springmvc的webmvc拦截配置一样
     * @author BIANP
     */
    @Configuration
    public class WebConfigurer implements WebMvcConfigurer {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            // 拦截所有请求,通过判断是否有 @LoginRequired 注解 决定是否需要登录
            registry.addInterceptor(LoginInterceptor()).addPathPatterns("/**");
        }
    
        @Bean
        public LoginInterceptor LoginInterceptor() {
            return new LoginInterceptor();
        }
    }
    

    3.需要放过的请求

    package com.ccblife.yb.support.bean.cons.adapter;
    
    public class AdapterConst {
    
        public static final String SUCCESS = "SUCCESS";
        public static final String ERROR = "ERROR";
        public static final String FIALL = "FIALL";
        /**********************对象和个体****************************/
        public static final String SESSION_USER = "loginedAgent"; // 用户对象
        public static final String SESSION_LOGINID = "sessionLoginID"; // 登录ID
        public static final String SESSION_USERID = "sessionUserID"; // 当前用户对象ID编号
    
        public static final String SESSION_USERNAME = "sessionUserName"; // 当前用户对象ID编号
        public static final Integer PAGE = 10; // 默认分页数
        public static final String SESSION_URL = "sessionUrl"; // 被记录的url
        public static final String SESSION_SECURITY_CODE = "sessionVerifyCode"; // 登录页验证码
        // 时间 缓存时间
        public static final int TIMEOUT = 1800;// 秒
        // 不验证URL anon:不验证/authc:受控制的  这里写放过的请求接口
        public static final String[] NO_INTERCEPTOR_PATH ={"/yb/register","/yb/validateMobile"};
    
    }
    
    
    展开全文
  • 基于token+Redis的实现方案 环境:springboot2.2.11.RELEASE + Redis pom.xml 依赖 org.springframework.bootspring-boot-starter-data-redisorg.springframework.bootspring-boot-starter-weborg.apache....
  • SpringBoot Token 登录验证机制图解

    千次阅读 2018-09-04 12:19:58
    登录验证机制图解
  • 现在的安全框架,一般请求的时候header中不是都存个token嘛,你要是用这个token去正常访问A域下的东西是没问题的,然后又去访问了B域,结果阴差阳错的还带着这个token,那么B域,或者说B网站是不是就可以拿着你的...
  • 源码下载 https://github.com/forezp/matrix-web 往期文章:跟我学Springboot开发后端管理系统1:概述跟我学Springboot开发后端管理系统2:Mybatis-Plus实战跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2...
  • 文章目录代码1:annotation/token代码2:config/...代码来源:Springboot token令牌验证解决方案 在SpringBoot实现基于Token的用户身份验证 代码1:annotation/token @Target({ElementType.METHOD, ElementType.TYPE...
  • SpringBoot整合Token

    千次阅读 2019-07-20 20:15:23
    SpringBoot整合TokenJWT什么是JSON Web Token?什么时候应该使用JSON Web令牌?什么是JSON Web令牌结构?HeaderPayloadSignature全部放在一起JWT工作原理SpringBoot集成引入依赖定义注解定义实体类编写...
  • springboot-token代码版eclipse
  • 主要介绍了springboot整合token的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • SpringBoot 配置token

    2021-03-18 14:48:54
    /** * @program: Jinfang_appmanage * @description: TOKEN生成 * @author: Gjm * @create: 2020-09-25 14:37 **/ public class JwtToken { /** * 用户名称 */ private static final String USERNAME = Claims....
  • SpringBoot集成token验证

    2019-12-30 22:59:18
    下面我们说一下SpringBoot如何集成token验证 1、向pom文件引入依赖 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version&g...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,738
精华内容 1,495
热门标签
关键字:

springboottoken

spring 订阅