java - 用户登录后如何在 Controller 中获取 session 数据

标签 java spring-mvc spring-boot spring-security spring-data-jpa

我在我的 Spring Boot MVC 应用程序中扩展了 WebSecurityConfigurerAdapter。我还创建了以下方法

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.authorizeRequests()
        .antMatchers("/")
        .permitAll()
        .antMatchers("/login")
        .permitAll()
        .antMatchers("/registration")
        .permitAll()
        .antMatchers("/dashboard")
        .hasAuthority("ADMIN")
        .anyRequest()
        .authenticated()
        .and()
        .csrf()
        .disable()
        .formLogin()
        .loginPage("/login")
        .failureUrl("/login?error=true")
        .defaultSuccessUrl("/dashboard")
        .usernameParameter("email")
        .passwordParameter("password")
        .and()
        .logout()
        .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
        .logoutSuccessUrl("/home")
        .and()
        .exceptionHandling()
        .accessDeniedPage("/access-denied");
}

用户登录后,我需要在 /dashboard Controller 中提供一些信息,例如用户名、角色、电子邮件等。我怎样才能实现这一目标?

我尝试谷歌搜索,但找不到任何有关此的具体信息。

最佳答案

好吧,你有几个选择:

  1. 您可以调用静态方法SecurityContextHolder.getContext().getAuthentication()(这样您就可以获取整个应用程序的凭据)
  2. 如果你在 Controller 中,你可以有一个Principle作为参数来获取信息
  3. 如果您需要身份验证 token ,可以使用 Authentication 作为参数。

请注意,您必须有某种机制来验证用户身份(例如带有 Activity 目录的 openid)并让您的服务器使用它。

参见http://www.baeldung.com/get-user-in-spring-security了解更多信息

关于java - 用户登录后如何在 Controller 中获取 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47846269/

相关文章:

java - 您如何确定 Android 上的音频延迟 (AudioTrack)?

javascript - 检测浏览器中的下载路径

Java-Reflection-Spring如何识别参数是用户定义对象还是Primitive Type

java - 将大型 Java 应用程序从 MyBatis 迁移到 ORM

spring - @ControllerAdvice处理异常,但不自定义响应

java - 无法将伪代码翻译为java

java - Java 中的数据库后端 webapp 测试 [需要工具]

java - 我想要一个简单的教程网站来学习java中的图像?

java - 失败 - 上下文路径/mycompany 中的应用程序无法启动

java - Spring Boot webapp 中的 Orika ClassCastException