精华内容
下载资源
问答
  • //获取当前登录用户的用户名AppSecurityUtils.obtainLoginedUsername()//获取当前用户tokenAppSecurityUtils.obtainAccessToken()AppSecurityUtils.javaimport org.apache.shiro.subject.Subject;/*** @author ...

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

    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;

    }

    /**

    * 本函数输出将作为默认的输出.

    */

    @Override

    public String toString() {

    return id;

    }

    }

    展开全文
  • 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

    展开全文
  • 2、token 做用户登录认证● 流程3、 Java 实现● 用户登录生成 token,保存到 Redis 中最简单的 token 可由 uid (用户唯一的身份标识)、sign (签名)、time (当前时间的时间戳) 加密组成。● 客户端把 token 信息存储...
    c0df38f3019e19fc93e507b163eecb3b.png

    1、什么是 token???

    Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌。

    2、token 做用户登录认证

    ● 流程

    5547866abbd0f38fb7d2deb15341d130.png

    3、 Java 实现

    ● 用户登录生成 token,保存到 Redis 中

    最简单的 token 可由 uid (用户唯一的身份标识)、sign (签名)、time (当前时间的时间戳) 加密组成。

    dfad7fc2cf0af67f8bfd00d8755c5fc5.png

    ● 客户端把 token 信息存储到 cookie 中,发起购买请求

    4d125e275523b6d012603544b5c080bc.png

    ① 使用注解 Auth

    c0cce8b474e8a6bacdb4ead57c03ce7f.png

    Auth

    60ace659483cad29870dae24ce41be76.png

    AuthAspect

    b54ab8b7f3e2d8606363e0ec80c559e8.png

    ② 使用 ThreadLocal 保存用户信息

    6822ad247e47660d4919864d01e5630c.png

    除了使用 ThreadLocal,我们还可以使用 SpringBoot 自定义参数解析器。

    d494b49e01c0251d41ba7c5f79a1a817.png

    CurrentUser

    a6c3968a2e213da58a718c617191091f.png

    CurrentUserMethodArgumentResolver

    730bd8e9b9a3e8f2593e681b5bb884fa.png

    WebMvcConfig

    ③ 全局异常捕获

    使用 ControllerAdvice

    1dd5282ba5a697e837b11075cbc0ecb5.png

    ● 客户端发起购买请求

    941063ceae35ec3502da6d7e0ccf94ae.png

    使用 CurrentUser 注解获取用户信息

    be25a55e797fd30df72e53d2a07dc7ae.png

    欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。如果你有更好的想法,欢迎留言,一起探讨,想说你就说啊!

    @Python大星 | 文

    展开全文
  • 通过自定义 @CurrentUser 获取当前登录用户 1、定义 @CurrenUser注解 package com.presoft.wydl.common.config; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang...

    通过自定义 @CurrentUser 获取当前登录用户

    1、定义 @CurrenUser注解

    package com.presoft.wydl.common.config;
    
    import java.lang.annotation.Retention;
    import java.lang.annotation.Target;
    import java.lang.annotation.RetentionPolicy;
    
    import java.lang.annotation.ElementType;
    @Target(ElementType.PARAMETER)          // 可用在方法的参数上
    @Retention(RetentionPolicy.RUNTIME)     // 运行时有效
    public @interface CurrentUser {
    	
    }
    

    2、添加参数解析器 

    要想 @CurrentUser 起作用,需要编写一个配套解析器,做法是实现 spring 提供的 HandlerMethodArgumentResolver 接口。

    package com.presoft.wydl.common.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.MethodParameter;
    import org.springframework.web.bind.support.WebDataBinderFactory;
    import org.springframework.web.context.request.NativeWebRequest;
    import org.springframework.web.context.request.RequestAttributes;
    import org.springframework.web.method.support.HandlerMethodArgumentResolver;
    import org.springframework.web.method.support.ModelAndViewContainer;
    import org.springframework.web.multipart.support.MissingServletRequestPartException;
    
    import com.presoft.wydl.packs.system.model.UserInfo;
    
    
    @Configuration
    public class CurrentUserMethodArgumentResolver implements HandlerMethodArgumentResolver {
    
    	@Override
        public boolean supportsParameter(MethodParameter parameter) {
            return parameter.getParameterType().isAssignableFrom(UserInfo.class)
                    && parameter.hasParameterAnnotation(CurrentUser.class);
        }
    
        @Override
        public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
            //取出第二节中放入请求中的用户信息
        	UserInfo user = (UserInfo)webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST);
            if (user != null) {
                return user;
            }
            throw new MissingServletRequestPartException("currentUser");
        }
    
    }
    

    3、配置参数解析器

    在 WebMvcConfigurer.java 中 Override addArgumentResolvers 方法

    //@Configuration
    public class InterceptorConfig extends   WebMvcConfigurationSupport {
    	
        @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
            super.addArgumentResolvers(argumentResolvers);
            argumentResolvers.add(new CurrentUserMethodArgumentResolver());
        }
    }

    4、实例

    @ApiOperation("获取企业信息")
    	@RequestMapping(value = "/list",method = RequestMethod.POST)
    	public Response list(EnterpriseVo vo,@CurrentUser UserInfo user) {
    		return enterpriseService.selectByParams(vo);
    	}

    5、 文件目录 

    原文 https://www.jianshu.com/p/01a6a61d9e02

    展开全文
  • importjava.io.IOException;importjavax.servlet.FilterChain;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache...
  • 慕运维8079593什么RequestContextHolder, shiro啊这些, 你不看源码相信用起来不会安心的, 还是...用户登录成功后, 生成登录成功的token(JWT你可以看下)连同用户的基本信息往redis中插入, 登录接口返回给客户端jwt, ...
  • 1.通过自定义 @CurrentUser 获取当前登录用户 1、定义 @CurrenUser注解 package com.presoft.wydl.common.config; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java....
  • 获取当前登录信息,是每个后端系统必不可少的功能,本文记载了使用ThreadLocal 获取当前登录信息,大致流程如下: ① 服务端接收到请求后,通过解析token 或者 cookies里面的用户信息,将用户信息存入ThreadLocal 中...
  • 登录流程imageJWT优劣优势1.紧凑轻量2.token自身包含用户信息且无法篡改,在服务(网关)中可以自行解析校验出用户信息,对认证服务器(account-svc)压力小不足1.无法吊销令牌,只能等待令牌自身过期2.令牌长度与其包含...
  • 01-14 (v3.1.1)使用RedisTokenStore不需要jdbc相关的包及配置增加支持统一身份认证(单点登录)功能对于排除拦截的接口也提供获取当前用户信息的方法2019-12-16 (v3.0.0)增加refresh_token机制增加@Ignore注解(用于...
  • // 获取当前会话是否已经登录, 返回true或false StpUtil.logout(); // 当前会话注销登录 StpUtil.logoutByLoginId(10001); // 让账号为10001的会话注销登录(踢人下线) StpUtil.hasRole("super-admin"); // 查询...
  • // 获取当前会话是否已经登录, 返回true或false StpUtil.logout(); // 当前会话注销登录 StpUtil.logoutByLoginId(10001); // 让账号为10001的会话注销登录(踢人下线) StpUtil.hasRole("super-admin"); // 查询...
  • 首页登录逻辑要求在页面上判断是否获取登录token ,没有获取到则跳转到登录页。登录成功后,跳转到前一个页面。1.vue router路由判断首先我们想到的是router.beforeEach 前置导航守卫 ,这个方法接受三个参数 to ...
  • 一、需求实现用户在浏览器登录后,跳转到...创建map集合,以用户id为键,token为值,先通过当前登录用户的id去获取token,如果token存在说明该用户已经登录过,调用redis以token为键删除上个用户的信息,调用方法...
  • 01-14 (v3.1.1)使用RedisTokenStore不需要jdbc相关的包及配置增加支持统一身份认证(单点登录)功能对于排除拦截的接口也提供获取当前用户信息的方法2019-12-16 (v3.0.0)增加refresh_token机制增加@Ignore注解(用于...
  • 01-14 (v3.1.1)使用RedisTokenStore不需要jdbc相关的包及配置增加支持统一身份认证(单点登录)功能对于排除拦截的接口也提供获取当前用户信息的方法2019-12-16 (v3.0.0)增加refresh_token机制增加@Ignore注解(用于...
  • 梳理一下最近自己编写的代码。微信小程序交给第三方管理,首先...其一,在小程序中可以使用wx.getUserInfo这个接口获取当前打开小程序用户的信息。但是,我们知道小程序就只是前端而已,它的大小最大也就几M而已,所以
  • Java 8 :Java 8 新特性总结、Java8常用新特性总结 、Java 8 学习资源推荐、Java8 forEach 指南 Java9~Java14 : 一文带你看遍 JDK9~14 的重要新特性! 网络 计算机网络常见面试题 计算机网络基础知识总结 ...
  • Java 8 :Java 8 新特性总结、Java8常用新特性总结 、Java 8 学习资源推荐、Java8 forEach 指南 Java9~Java14 : 一文带你看遍 JDK9~14 的重要新特性! 网络 计算机网络常见面试题 计算机网络基础知识总结 ...
  • Java EE常用框架.xmind

    2020-06-19 16:08:35
    FormAuthenticationFilter 调用realm传入一个token(username和password) realm认证时根据username查询用户信息(在Activeuser中存储,包括 userid、usercode、username、menus)。 如果查询不到,...
  • url是微信公众号配置的服务器地址的最后部分(不包括域名和web应用上下文),是识别微信公众号的唯一标识,透过url我们可以通过微信上下文帮助类(WeixinContextHelper)的静态方法获取到微信上下文及访问token,...
  • 项目中的实现是,自定义一个注解,将它用在需要登录/某种权限的方法中,然后在拦截器中判断要访问的方法是否有我们自定义的注解,如果有就判断当前用户是否登录了(判断是否携带了登录之后获取到的token),从而决定...
  • // 给当前登录用户进行动态授权 // 1.获取当前用户的pricipal Subject subject = SecurityUtils.getSubject(); User dbUser = (User) subject.getPrincipal(); // 2.查询当前用户拥有的资源授权码 ...
  • 问题描述: 由于在java过滤器中通过User token...获取当前登录用户的信息,报UnavailableSecurityManagerException这个异常。 spring整合shiro出现UnavailableSecurityManagerException在网上查出的问题都是没有...
  • 微信授权登录获取用户基本信息 官方文档 详细步骤 微信公众账号提供用户请求授权页面URL。 用户点击授权页面URL,将向服务器发起请求 scope为snsapi_base时 服务器询问用户, 用户同意授权给微信公众账号 服务器...
  • //获取当前网页的url //http://ding-web.lnexin.cn/?corpid=ding46a9582af5b7541b35c2f4657eb6378f var currentUrl = document.location.toString() $("#url").append(currentUrl) // 解析url中包含的corpId ...
  •  显示用户加入购物车的商品,计算总的价格,提供全选和取消全选的按钮,从后台获取商品的单价,判断当前剩余的数量,当用户点击数量添加或者减少之后,对于总价要实时刷新,采用jQuery对数据进行修改,当用户取消...
  • Java 8 :Java 8 新特性总结、Java8常用新特性总结 、Java 8 学习资源推荐、Java8 forEach 指南 Java9~Java14 : 一文带你看遍 JDK9~14 的重要新特性! 网络 计算机网络常见面试题 计算机网络基础知识总结 ...
  • CAS 跨域的问题

    2009-10-10 22:04:28
    2.系统A发现当前用户没有登录 3.系统将登录过程委托给本地的agent,比如CAS的java client或者web client 4.本地agent将页面转向给sso系统,并且生成一个随机的token 5.用户在sso系统上输入账号密码,登录成功 6....

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

java获取当前登录token

java 订阅