精华内容
下载资源
问答
  • Java如何获取token

    2021-05-26 14:24:02
    Java如何传入username和password,来获取token 首先postman测试,返回正常 然后Java中我使用的是resttemplate,注意先设置头,然后Map中put账号密码,再把header的头,contenttype设置为MediaType....

    日常记录:

    Java如何传入username和password,来获取token

     

    首先postman测试,返回正常

     

     

    然后Java中我使用的是resttemplate,注意先设置头,然后Map中put账号密码,再把header的头,contenttype设置为MediaType.Application_JSON(是传JSON格式的数据“application/JSON”时用这个)

    最后打印一下,获取到了token,成功

    每日一句心灵鸡汤:

    也许你想成为太阳,可你却只是一颗星辰;也许你想成为大树,可你却是一棵小草。于是,你有些自卑。其实,你和别人一样,也是一片风景:做不了太阳,就做星辰,在自己的星座发光发热;做不了大树,就做小草,以自己的绿色装点希望……

    展开全文
  • java token登录令牌

    2021-05-06 15:53:43
    生成完之后将token值返回给前端,前端存储cookie或session中,每次请求接口需要携带token值,后端会进行相应判断,如果过期或者当前值不相同则进行拦截 二:编码 MD5加密 /** * @Author: guwenhai * @Description...

    一:简介

    1. token 值: 登录令牌.利用 token 值来判断用户的登录状态.类似于 MD5 加密之后的长字符串
      用户登录成功之后,在后端(服务器端)会根据用户信息生成一个唯一的值.这个值就是 token 值
      生成完之后将token值返回给前端,前端存储cookie或session中,每次请求接口需要携带token值,后端会进行相应判断,如果过期或者当前值不相同则进行拦截

    二:编码

    1. MD5加密
    /**
    * @Author: guwenhai
    * @Description:    MD5加密
    * @Date: 11:41 2020/6/11
    */
    public static String getMD5Str(String str) {
       byte[] digest = null;
       try {
           MessageDigest md5 = MessageDigest.getInstance("md5");
           digest  = md5.digest(str.getBytes("utf-8"));
       } catch (NoSuchAlgorithmException e) {
           e.printStackTrace();
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
       }
       //16是表示转换为16进制数
       String md5Str = new BigInteger(1, digest).toString(16);
       return md5Str;
    }
    
    1. 生成token
    /**
    * 加密
    * @param object 加密数据
    * @param maxTime 有效期(毫秒数)
    * @param <T>
    * @return
    */
    public static <T> String encode(T object,long maxTime){
       try{
           //秘钥加密
           final JWTSigner signer=new JWTSigner(SECRET);
           final Map<String ,Object> data=new HashMap<>(10);
           //存入的信息
           data.put(PAYLOAD,object);
           //有效日期时间
           data.put(EXP,System.currentTimeMillis()+maxTime);
           //生成加密字符串
           return signer.sign(data);
       } catch (Exception e) {
           e.printStackTrace();
           return null;
       }
    }
    
    1. 解密token
    /**
     * 数据解密
     * @param jwt 解密数据
     * @return
     * @throws Exception
     */
    public static ReturnBase decode(String jwt) throws Exception{
        ReturnBase returnData = new ReturnBase(StatusCode.Success);
        //获取秘钥
        final JWTVerifier jwtVerifier=new JWTVerifier(SECRET);
        final Map<String,Object> data=jwtVerifier.verify(jwt);
        //判断数据是否超时或者符合标准
        if(data.containsKey(EXP)&&data.containsKey(PAYLOAD)){
            //有效期时间戳
            long exp = (long) data.get(EXP);
            //当前时间戳
            long currentTimeMillis = System.currentTimeMillis();
            if(exp > currentTimeMillis){
                //解析数据信息
                Map<String,Object> json= (Map<String, Object>) data.get(PAYLOAD);
                returnData.setData(json);
            }else {
                returnData = new ReturnBase(99999,"用户登录超时");
            }
        }else {
            returnData = new ReturnBase(99999,"用户token错误");
        }
        return returnData;
    }
    
    展开全文
  • // 获取 token 中的 user id String userId; try { userId = JWT.decode(token).getAudience().get(0); } catch (JWTDecodeException j) { throw new RuntimeException("401"); } User user = userService....

     

    public class AuthenticationInterceptor implements HandlerInterceptor {
        @Autowired
        UserService userService;
        @Override
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception {
            String token = httpServletRequest.getHeader("token");// 从 http 请求头中取出 token
            // 如果不是映射到方法直接通过
            if(!(object instanceof HandlerMethod)){
                return true;
            }
            HandlerMethod handlerMethod=(HandlerMethod)object;
            Method method=handlerMethod.getMethod();
            //检查是否有passtoken注释,有则跳过认证
            if (method.isAnnotationPresent(PassToken.class)) {
                PassToken passToken = method.getAnnotation(PassToken.class);
                if (passToken.required()) {
                    return true;
                }
            }
            //检查有没有需要用户权限的注解
            if (method.isAnnotationPresent(UserLoginToken.class)) {
                UserLoginToken userLoginToken = method.getAnnotation(UserLoginToken.class);
                if (userLoginToken.required()) {
                    // 执行认证
                    if (token == null) {
                        throw new RuntimeException("无token,请重新登录");
                    }
                    // 获取 token 中的 user id
                    String userId;
                    try {
                        userId = JWT.decode(token).getAudience().get(0);
                    } catch (JWTDecodeException j) {
                        throw new RuntimeException("401");
                    }
                    User user = userService.findUserById(userId);
                    if (user == null) {
                        throw new RuntimeException("用户不存在,请重新登录");
                    }
                    // 验证 token
                    JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
                    try {
                        jwtVerifier.verify(token);
                    } catch (JWTVerificationException e) {
                        throw new RuntimeException("401");
                    }
                    //将验证通过后的用户信息放到请求中
                    httpServletRequest.setAttribute("currentUser", user);
                    return true;
                }
            }
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest httpServletRequest, 
                                      HttpServletResponse httpServletResponse, 
                                Object o, ModelAndView modelAndView) throws Exception {
    
        }
        @Override
        public void afterCompletion(HttpServletRequest httpServletRequest, 
                                              HttpServletResponse httpServletResponse, 
                                              Object o, Exception e) throws Exception {
        }

    spring-boot 集成JWT实现token验证

    1、引入JWT依赖,由于是基于Java,所以需要的是java-jwt

    <dependency>
          <groupId>com.auth0</groupId>
          <artifactId>java-jwt</artifactId>
          <version>3.4.0</version>
    </dependency>

    2、需要自定义两个注解

    用来跳过验证的PassToken

    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface UserLoginToken {
        boolean required() default true;
    }

    需要登录才能进行操作的注解UserLoginToken 

    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface PassToken {
        boolean required() default true;
    }

    如果不能导入依赖包,手动导入 

    import java.lang.annotation.RetentionPolicy;
     
    import java.lang.annotation.ElementType;

    3、实体类UserInfo简写

    package com.presoft.wydl.packs.system.model;
    
    import java.util.Date;
    
    import com.fasterxml.jackson.annotation.JsonFormat;
    
    public class UserInfo {
        private Long id;
    
        private String rybm;
    
        private String zh;
    
        private String mm;
    
        private String ryxm;
    }

    4、token的生成方法

    package com.presoft.wydl.common.util;
    
    import com.auth0.jwt.JWT;
    import com.auth0.jwt.algorithms.Algorithm;
    import com.presoft.wydl.packs.system.model.UserInfo;
    
    public class JwtUtil {
    
    	public static String getToken(UserInfo user) {
            String token="";
            token= JWT.create().withAudience(user.getRybm())
                    .sign(Algorithm.HMAC256(user.getMm()));
            return token;
        }
    }
    

    5、接下来需要写一个拦截器去获取token并验证token

    6、配置拦截器

    @Configuration
    public class InterceptorConfig extends   WebMvcConfigurationSupport {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(authenticationInterceptor())
                    .addPathPatterns("/**");   
        }
        @Bean
        public AuthenticationInterceptor authenticationInterceptor() {
            return new AuthenticationInterceptor();
        }
        @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
            super.addArgumentResolvers(argumentResolvers);
            argumentResolvers.add(new CurrentUserMethodArgumentResolver());
        }
    }
    
    
    
    

    7、登录验证Controller

    //登录
    	@PassToken
        @RequestMapping(value = "/loginByTele",method = RequestMethod.POST)
        public Object login(HttpServletRequest request ,UserInfoVo vo){
            UserInfo userForBase=userInfoMapper.findBySjhm(vo.getSjhm());
            if(userForBase==null){
                Response response = new Response();
    			response.setCode("300");
    			response.setMsg("登录失败,用户不存在");
    			return response;
            }else {
                if (!userForBase.getMm().equals(vo.getMm())){
                    Response response = new Response();
    				response.setCode("300");
    				response.setMsg("登录失败,密码错误");
    				return response;
                }else {
                    String token = JwtUtil.getToken(userForBase);
                    userForBase.setToken(token);
                    Response response = new Response("200","请求成功",userForBase);
        			response.setCode("200");
        			return response;
                }
            }
        }

    原文 https://www.jianshu.com/p/e88d3f8151db

     

    展开全文
  • shiro 获取当前用户token

    千次阅读 2019-09-16 02:56:16
    //获取当前登录用户的用户名 AppSecurityUtils.obtainLoginedUsername() //获取当前用户token AppSecurityUtils.obtainAccessToken() AppSecurityUtils.java import org....

    //获取当前登录用户的用户名

    AppSecurityUtils.obtainLoginedUsername()

    //获取当前用户token

    AppSecurityUtils.obtainAccessToken()

    AppSecurityUtils.java

    
    
    import org.apache.shiro.subject.Subject;
    
    
    /**
     * @author yangty
     *
     */
    public class AppSecurityUtils {
    	
    	/**
    	 * 获取当前登录用户的用户名
    	 * @return
    	 */
    	public static String obtainLoginedUsername() {
    		Subject currentUser = org.apache.shiro.SecurityUtils.getSubject();
    		if(currentUser == null || currentUser.getPrincipal() == null) {
    			return "";
    		}
    		AppShiroUser shiroUser = (AppShiroUser)currentUser.getPrincipal();
    		return shiroUser.getId();
    	}
    	
    	/**
    	 * 获取当前用户token
    	 * 
    	 * @return
    	 */
    	public static String obtainAccessToken() {
    		Subject currentUser = org.apache.shiro.SecurityUtils.getSubject();
    		if(currentUser == null || currentUser.getPrincipal() == null) {
    			return "";
    		}
    		
    		AppShiroUser shiroUser = (AppShiroUser)currentUser.getPrincipal();
    		
    		return shiroUser.getAccessToken();
    	}
    }
    

    AppShiroUser 

    
    
    import java.io.Serializable;
    
    public class AppShiroUser implements Serializable{
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 8494048657048720145L;
    
    	private String id;	// 用户ID
    	
    	private String accessToken;	// 用户oauth授权accessToken
    	
    	private String ipAddress;//用户登录的机器IP
    
    	public AppShiroUser(String id, String accessToken) {
    		super();
    		this.id = id;
    		this.accessToken = accessToken;
    	}
    
    	public String getId() {
    		return id;
    	}
    
    	public String getAccessToken() {
    		return accessToken;
    	}
    
    	public void setAccessToken(String accessToken) {
    		this.accessToken = accessToken;
    	}
    	
    	/**
    	 * @return the ipAddress
    	 */
    	public String getIpAddress() {
    		return ipAddress;
    	}
    
    	/**
    	 * @param ipAddress the ipAddress to set
    	 */
    	public void setIpAddress(String ipAddress) {
    		this.ipAddress = ipAddress;
    	}
    	
    	/**
    	 * 本函数输出将作为默认的<shiro:principal/>输出.
    	 */
    	@Override
    	public String toString() {
    		return id;
    	}
    }
    

     

    转载于:https://my.oschina.net/yangty2017/blog/917131

    展开全文
  • java的jwt+拦截器校验token获取用户信息 最近换工作,发现自己只会crud准备加强一下。结合网上资源写了一个用jwt生成并且校验token、校验token是在拦截器里面的,还有对异常的封装,响应体返回的封装,先写代码再...
  • Java实现JWT的Token认证机制

    万次阅读 2019-04-11 10:21:34
    基于JWT的Token认证机制实现 1.什么是JWT JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 2.JWT组成 一个JWT实际上就是一个字符串,它由三部分组成,...
  • java实现基于token认证

    2021-01-10 00:36:40
    下面代码是我们从用户的登录登录后的token认证的实现 没有异常处理的朋友可以参考一下 附:ReturnException异常类 传送门:https://blog.csdn.net/qq_39997045/article/details/112068918 1. 用.
  • 通常,在APP开发过程中会碰到一些场景,接口需要登录或者需要授权才能访问,一般的做法是登录成功之后服务器返回生成的token给客户端,客户端访问接口的时候带上token,用以验证登录.我们的方案是使用JWT来创建token,然后...
  • 现在公司派发一个app由我负责,目前刚开始开发。想换一种token验证的方式 以下上图: 1. 当用户输入账号密码时会生成两个token存在redis...当其它地方有人使用这个账户登录时可以把当前在线用户挤下线(公司业务逻...
  • id=mp1421140183摘取部分:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。目前Access_token的有效期通过返回的expire_in来传达,目前是7200秒之.....
  •  使用接口 : appId 是当前开发者的appId 不是用户的  path 是回调地址  这个链接是授权链接,当重定向这个链接的时候,会展示授权页,点击授权之后 跳入你path的请求接口 回调中带了一个参数code获取到就行 ...
  • 企业微信API-https请求模板-获取access_token-Java

    千次阅读 多人点赞 2021-02-18 13:54:59
    本文主要介绍,如何使用Java代码,发起企业微信API支持的HTTPS请求,获取access_token
  • 这一次我们来实现一个使用Token方式的用户登录机制。 听说现在使用token方式登录非常流行,可以替代之前使用cookie/session方式实现用户登录。 对博主而言,一个非常便捷的地方在于,使用token进行登录验证,在前后...
  • Java 进阶 理解Token ,Cookie,Session

    千次阅读 2019-10-31 20:32:42
    Java 进阶 理解Token ,Cookie,Session 在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie ...
  • Java小白入门 —— Session与Cookie 一. Cookie 技术: 1. 什么是 cookie ? Cookie 实际上是一小段的文本信息(key-value格式)。当客户端向服务端发起请求时,如果需要记录客服端的用户状态时,服务端就会使用 ...
  • 拦截器在获取token信息时,可以直接通过redis获取到用户信息 public class UserContext { public static final Logger logger = LoggerFactory.getLogger(UserContext.class); /** * 登录用户上下文存储 */ ...
  • 1、之前在网上看到,一些配置cookie来实现绕过登录的文章。但是,对于现在的网站,有些采用Local Storage来缓存当前加密的登录信息,这样的话,是...首先我们需要一个发送请求,获取登录token等信息的post请求: S...
  • java基础---(2)Javatoken的使用详解

    万次阅读 多人点赞 2017-12-20 15:00:09
    本文详细的介绍了javatoken的使用场景和方法。
  • 参考链接:OAuth2密码模式获取Token 注:在进行本地搭建测试时,出现一个pom中 <artifactId>spring-cloud-dependencies<artifactId> 版本问题,导致maven命令执行不了。去Maven仓库官网查看对应版本...
  • Java后端生成Token架构与设计详解

    万次阅读 2018-07-06 09:22:16
    目的:电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交.技术选型:用开源的JWT架构。 1.概述:在web项目中,服务端和前端经常需要交互数据,有的时候由于网络相应慢,客户端在提交某些敏感数据...
  • 登录成功后,使用用户id构造生成一个token并保存到redis中,同时也保存用户id到session中 生成token的代码如下: @Override public String createToken(String phone,String appId) throws Exception { ...
  • 测试diiopLogin需要ncso.jar,需要的请mailto:shijun-s#163.com #换成@ 博文链接:https://portal.iteye.com/blog/200710
  • package com.feng.test...import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.URL;import java.net.URLEncoder;import java.security.I...
  • Java企业微信开发源码框架,获取AccessToken,发送消息. 当前应用于公司的企业微信监控报警系统. 微信企业号管理系统源码框架 使用springboot框架 基础签名验证,附加强加密算法jar 获取accessToken 发送消息 扩展对接...
  • ②后端处理:对于每次提交到后台的数据必须校验,也就是通过前端携带的令牌(一串唯一字符串)与后端校验来判断当前数据是否有效。 3.总结:第一种方法相对来说比较简单,但是安全系数不高,第二种方法从根本上...
  • JAVA】基于Token的用户验证

    万次阅读 2018-07-23 08:51:33
    传统的用户验证是基于session自身的特性实现,当用户提交登陆请求,后台验证通过后,会在session中留下用户的信息,用于识别当前用户在客户端登陆了。通常而言session都是保存在内存中,而随着认证用户的增多,...
  • 用户鉴权一直是我先前的一个问题,以前我用户接口鉴权是通过传入参数进行鉴权,只要是验证用户的地方就写token验证,虽然后面也把token验证方法提取到基类中,但是整体来说仍然不是太雅观,当时的接口如下所示. ...
  • Spring Security - 获取当前登录用户的详细信息 在Spring框架里面,可以通过以下几种方式获取当前登录用户的详细信...
  • Java Token的原理和生成使用机制

    万次阅读 多人点赞 2019-06-13 16:00:45
    返回用户信息后,Login Action从配置文件中获取Token签名生成的秘钥信息,进行Token的生成; 生成Token的过程中可以调用第三方的JWT Lib生成签名后的JWT数据; 完成JWT数据签名后,将其设置到COOKIE对象中,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,197
精华内容 24,078
关键字:

java获取当前登录token

java 订阅