精华内容
下载资源
问答
  • 当然这个就超出了本文的范围了,本文仅仅是教你如何获取当前登录用户信息。 1)使用函数 get_currentuserinfo(); 此函数将当前登录用户信息赋给全局变量$current_user以及一些单独的用户信息全局变量例如$display_...
  • 主要介绍了Springboot+Shiro记录用户登录信息,并获取当前登录用户信息,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 后端获取当前登录用户信息 UserDetails currentUserDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

    后端获取当前登录用户信息

    UserDetails currentUserDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    
    
    
    展开全文
  • 微信网页授权获取当前登录用户信息参照(WeiXinWYSQ.aspx页面),红包支付参照(PayForWeiXin.ashx),获取公众号下面所有用户OpenID用户信息参照(GetRmbByUnionId.ashx),所有内容都已经调通,记得修改密钥地址和...
  • 主要介绍了使用spring oauth2框架获取当前登录用户信息的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 获取当前用户信息怎么办?我们知道spring oauth2是基于spring security的实现的。spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。而spring ...

    使用spring oauth2框架做授权鉴定。想获取当前用户信息怎么办?

    我们知道spring oauth2是基于spring security的实现的。

    spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。

    而spring oauth2通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()却只能拿到当前用户的用户名。

    然而实际开发过程中,我们较常用到的大部分都是用户的id。

    那么怎么通过配置获取当前用户的信息呢?

    首先我们看下,为什么oauth2通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到的是用户名?

    我们看下源码

    DefaultUserAuthenticationConverter.java

    public Authentication extractAuthentication(Map map) {

    // userClaimName是静态常量:username

    if (map.containsKey(userClaimName)) {

    Object principal = map.get(userClaimName);

    Collection extends GrantedAuthority> authorities = getAuthorities(map);

    // 原因就是这里。如果userDetailsService为空,返回的就是用户名。

    if (userDetailsService != null) {

    UserDetails user = userDetailsService.loadUserByUsername((String) map.get(userClaimName));

    authorities = user.getAuthorities();

    principal = user;

    }

    return new UsernamePasswordAuthenticationToken(principal, "N/A", authorities);

    }

    return null;

    }

    那我们就给这个类,设置userDetailsService。

    我们看下这个类的调用。

    DefaultAccessTokenConverter.java

    public class DefaultAccessTokenConverter implements AccessTokenConverter {

    // 一开始就被初始化好了,所以不能设置userDetailsService

    private UserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter();

    // 但是提供了setter接口,所以我们要做的就是覆盖上面的实例。

    public void setUserTokenConverter(UserAuthenticationConverter userTokenConverter) {

    this.userTokenConverter = userTokenConverter;

    }

    }

    所以如果是使用DefaultAccessTokenConverter的,代码可以这么写

    @Configuration

    @EnableAuthorizationServer

    public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    @Override

    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

    endpoints.tokenStore(tokenStore)

    .authenticationManager(manager)

    .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)

    .userDetailsService(userService)

    // .accessTokenConverter(tokenConverter);

    DefaultAccessTokenConverter converter = new DefaultAccessTokenConverter();

    DefaultUserAuthenticationConverter userAuthenticationConverter

    = new DefaultUserAuthenticationConverter();

    userAuthenticationConverter.setUserDetailsService(userService);

    converter.setUserTokenConverter(userAuthenticationConverter);

    endpoints.accessTokenConverter(converter);

    }

    }

    如果是用jwtConverter的话,可以这么改。

    定义一个accessTokenConverter继承DefaultAccessTokenConverter

    public class OauthAccessTokenConverter extends DefaultAccessTokenConverter {

    public OauthAccessTokenConverter(SecurityUserService userService) {

    DefaultUserAuthenticationConverter converter = new DefaultUserAuthenticationConverter();

    converter.setUserDetailsService(userService);

    super.setUserTokenConverter(converter);

    }

    }

    定义一个jwtConverter继承JwtAccessTokenConver

    public class OauthJwtAccessTokenConverter extends JwtAccessTokenConverter {

    public OauthJwtAccessTokenConverter(SecurityUserService userService) {

    super.setAccessTokenConverter(new OauthAccessTokenConverter(userService));

    }

    }

    注册bean

    @Configuration

    public class TokenConfig {

    @Bean

    public TokenStore jwtTokenStore(JwtAccessTokenConverter converter) {

    return new JwtTokenStore(converter);

    }

    @Bean

    public JwtAccessTokenConverter jwtAccessTokenConverter(SecurityUserService userService) {

    JwtAccessTokenConverter accessTokenConverter = new OauthJwtAccessTokenConverter(userService);

    accessTokenConverter.setSigningKey("sign_key");

    return accessTokenConverter;

    }

    }

    Oauth2认证服务

    @Configuration

    @EnableAuthorizationServer

    public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    @Autowired

    private AuthenticationManager manager;

    @Autowired

    private SecurityUserService userService;

    @Autowired

    private TokenStore tokenStore;

    @Autowired

    private JwtAccessTokenConverter tokenConverter;

    @Override

    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

    endpoints.tokenStore(tokenStore)

    .authenticationManager(manager)

    .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)

    .userDetailsService(userService)

    .accessTokenConverter(tokenConverter);

    }

    }

    最后就可以像spring security一样。

    使用SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取用户信息了。

    2020/09/21

    认证端/资源端分离

    @Bean

    public ResourceServerTokenServices tokenService() {

    DefaultAccessTokenConverter converter = new DefaultAccessTokenConverter();

    DefaultUserAuthenticationConverter userAuthenticationConverter

    = new DefaultUserAuthenticationConverter();

    userAuthenticationConverter.setUserDetailsService(userService);

    converter.setUserTokenConverter(userAuthenticationConverter);

    RemoteTokenServices tokenServices = new RemoteTokenServices();

    tokenServices.setAccessTokenConverter(converter);

    tokenServices.setClientId("sample_test_client_app");

    tokenServices.setClientSecret("secret");

    tokenServices.setCheckTokenEndpointUrl("http://localhost:8080/oauth/check_token");

    return tokenServices;

    }

    展开全文
  • 获取当前用户信息怎么办?我们知道spring oauth2是基于spring security的实现的。spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。而spring ...

    使用spring oauth2框架做授权鉴定。想获取当前用户信息怎么办?

    我们知道spring oauth2是基于spring security的实现的。

    spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。

    而spring oauth2通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()却只能拿到当前用户的用户名。

    然而实际开发过程中,我们较常用到的大部分都是用户的id。

    那么怎么通过配置获取当前用户的信息呢?

    首先我们看下,为什么oauth2通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到的是用户名?

    我们看下源码

    DefaultUserAuthenticationConverter.java

    public Authentication extractAuthentication(Map map) {

    // userClaimName是静态常量:username

    if (map.containsKey(userClaimName)) {

    Object principal = map.get(userClaimName);

    Collection extends GrantedAuthority> authorities = getAuthorities(map);

    // 原因就是这里。如果userDetailsService为空,返回的就是用户名。

    if (userDetailsService != null) {

    UserDetails user = userDetailsService.loadUserByUsername((String) map.get(userClaimName));

    authorities = user.getAuthorities();

    principal = user;

    }

    return new UsernamePasswordAuthenticationToken(principal, "N/A", authorities);

    }

    return null;

    }

    那我们就给这个类,设置userDetailsService。

    我们看下这个类的调用。

    DefaultAccessTokenConverter.java

    public class DefaultAccessTokenConverter implements AccessTokenConverter {

    // 一开始就被初始化好了,所以不能设置userDetailsService

    private UserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter();

    // 但是提供了setter接口,所以我们要做的就是覆盖上面的实例。

    public void setUserTokenConverter(UserAuthenticationConverter userTokenConverter) {

    this.userTokenConverter = userTokenConverter;

    }

    }

    所以如果是使用DefaultAccessTokenConverter的,代码可以这么写

    @Configuration

    @EnableAuthorizationServer

    public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    @Override

    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

    endpoints.tokenStore(tokenStore)

    .authenticationManager(manager)

    .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)

    .userDetailsService(userService)

    // .accessTokenConverter(tokenConverter);

    DefaultAccessTokenConverter converter = new DefaultAccessTokenConverter();

    DefaultUserAuthenticationConverter userAuthenticationConverter

    = new DefaultUserAuthenticationConverter();

    userAuthenticationConverter.setUserDetailsService(userService);

    converter.setUserTokenConverter(userAuthenticationConverter);

    endpoints.accessTokenConverter(converter);

    }

    }

    如果是用jwtConverter的话,可以这么改。

    定义一个accessTokenConverter继承DefaultAccessTokenConverter

    public class OauthAccessTokenConverter extends DefaultAccessTokenConverter {

    public OauthAccessTokenConverter(SecurityUserService userService) {

    DefaultUserAuthenticationConverter converter = new DefaultUserAuthenticationConverter();

    converter.setUserDetailsService(userService);

    super.setUserTokenConverter(converter);

    }

    }

    定义一个jwtConverter继承JwtAccessTokenConver

    public class OauthJwtAccessTokenConverter extends JwtAccessTokenConverter {

    public OauthJwtAccessTokenConverter(SecurityUserService userService) {

    super.setAccessTokenConverter(new OauthAccessTokenConverter(userService));

    }

    }

    注册bean

    @Configuration

    public class TokenConfig {

    @Bean

    public TokenStore jwtTokenStore(JwtAccessTokenConverter converter) {

    return new JwtTokenStore(converter);

    }

    @Bean

    public JwtAccessTokenConverter jwtAccessTokenConverter(SecurityUserService userService) {

    JwtAccessTokenConverter accessTokenConverter = new OauthJwtAccessTokenConverter(userService);

    accessTokenConverter.setSigningKey("sign_key");

    return accessTokenConverter;

    }

    }

    Oauth2认证服务

    @Configuration

    @EnableAuthorizationServer

    public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    @Autowired

    private AuthenticationManager manager;

    @Autowired

    private SecurityUserService userService;

    @Autowired

    private TokenStore tokenStore;

    @Autowired

    private JwtAccessTokenConverter tokenConverter;

    @Override

    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

    endpoints.tokenStore(tokenStore)

    .authenticationManager(manager)

    .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)

    .userDetailsService(userService)

    .accessTokenConverter(tokenConverter);

    }

    }

    最后就可以像spring security一样。

    使用SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取用户信息了。

    展开全文
  • Shiro(3) controller中获取当前登录用户信息

    万次阅读 热门讨论 2017-07-17 14:53:49
    //Shiro controller中获取当前登录用户信息方式一: @RequestMapping(value = "/competitorPageList" ) public String competitorPageList(Model model, ) { Long currentUserId = (Long) SecurityUtils....

    //Shiro controller中获取当前登录用户信息

    方式一:

        @RequestMapping(value = "/competitorPageList" ) 
        public String competitorPageList(Model model, ) {
    
     Long currentUserId = (Long) SecurityUtils.getSubject().getSession().getAttribute("currentUserId"); 
     }

    方式二:

     @RequestMapping(value = "/competitorPageList" ) 
        public String competitorPageList(Model model,HttpServletRequest request ) { 
    Long currentUserId = (Long) request.getSession().getAttribute("currentUserId");
           }
    展开全文
  • ASP.NET Core 2.0 MVC - 获取当前登录用户信息 原文:ASP.NET Core 2.0 MVC - 获取当前登录用户信息一、前言  上篇实战完成后,没想到会有那么多的圈友给了那么多的支持,甚至连只是作为代码仓储的...
  • 从 Spring security oauth2 client 自动配置中获取当前登录用户信息 方法一:在AuthenticationSuccessHandler实现类中获取 缺点:获取用户信息后需要做跳转,底层框架并不会自动跳转回未授权之前访问的页面 ...
  • 获取当前用户信息怎么办?我们知道spring oauth2是基于spring security的实现的。spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。而spring ...
  • 慕运维8079593什么RequestContextHolder, shiro啊这些, 你不看源码相信用起来不会安心的, 还是...用户登录成功后, 生成登录成功的token(JWT你可以看下)连同用户的基本信息往redis中插入, 登录接口返回给客户端jwt, ...
  • 使用shiro的SecurityUtils.getSubject().getPrincipal()获取当前登录用户信息遇到的问题总结一下 1.获取不到返回null (1)设置配置AuthorizationAttributeSourceAdvisor在整个类的最前面,至少在...
  • 1、首先需要用到token,在用户表中存放一个token,每当用户登录的时候就用UUID生成一个token替换之前的token,并保存(修改)到缓存中。 2、创建@CurrentUser注解...6、配置解析器,用来获取当前登录用户信息 ...
  • ShiroUtils.getUserEntity() 获取当前人人用户
  • 获取当前用户信息怎么办? 我们知道spring oauth2是基于spring security的实现的。 spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。 而...
  • 获取当前用户信息怎么办?我们知道spring oauth2是基于spring security的实现的。spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。而spring ...
  • 但是目前还用不到Shiro的高级权限,只为了简单获取用户信息,自己整合了一个只记录用户,获取用户信息的功能。 导入Shiro依赖 <!-- Shiro --> <dependency> <groupId>org.apache.shiro</...
  • 获取当前用户信息怎么办?我们知道spring oauth2是基于spring security的实现的。spring security可以通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()获取到当前用户信息。而spring ...
  • 但是目前还用不到Shiro的高级权限,只为了简单获取用户信息,自己整合了一个只记录用户,获取用户信息的功能。导入Shiro依赖org.apache.shiroshiro-spring1.4.0User类这个类只需要自己定义一个username(可以其他的...
  • 我用的是MySQL,做了一个登录界面,注册的的时候有很...比如我现在要获取已经登录用户abc的全部信息存入session中,并在其他页面中调用,代码应该怎么写?用电话tel举个例子就好,我再对照着自己摸索一下,感激不尽。
  • 在使用CAS + Spring security 整合实现SSO时, 在客户端应用访问有的地址时无法获取当前登录用户信息(即通过SecurityContextHolder.getContext().getAuthentication().getPrincipal()返回null). 这是由于对该...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,626
精华内容 650
关键字:

获取当前登录用户信息