java - 包括登录方法

标签 java spring spring-mvc

我有一个实体用户,我希望每个 Controller 的每个方法都可以访问已登录的用户,而无需输入以下内容:

model.addAttribute(userDao.getuser(principal.getUsername()));

最佳答案

您可以实现一个简单的HandlerInterceptorAdapter,它将在调用处理程序后将用户实例添加到模型中。

class UserAddingHandlerInterceptor extends HandlerInterceptorAdapter {

    // Autowire dependencies...

    private static final String ATTRIBUTE = "user";

    @Override
    public void postHandle(HttpServletRequest request, 
                           HttpServletResponse response, 
                           Object handler, 
                           ModelAndView modelAndView) throws Exception {

        if (modelAndView != null && !modelAndView.getModelMap().hasAttribute(ATTRIBUTE) {
            modelAndView.addObject(ATTRIBUTE, userDao.getuser(principal.getUsername()));
        }
    }
}

关于java - 包括登录方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23696783/

相关文章:

java - 在 Wildfly16 上部署 Spring 应用程序时出现错误(从 Wildfly8 迁移到 16)

java - 如何在任何在线服务器上部署 Spring 框架后端和 Angular 2 前端应用程序?

java - Spring roo,字段枚举

java - 如何在 jtabbedpane 中为选项卡标题设置字体

java - 如何使用 actionListener 打开另一个类中的 Jframe 作为构造函数?

Java FileInputStream 找不到文件 (LibGDX)

具有 LDAP 和数据库角色的 Spring Security

java - Amazon SNS java - 自定义 header ?

java - 使用Spring Boot Profile和Gradle管理依赖项

spring - 无法使用 CATALINA_HOME/lib 文件夹中的 Spring 和 Spring Security jar