2

如何在 HTML 页面中显示当前用户的名称?不幸的是,我是 Javascript/jQuery 的新手。所以我在 Spring MVC、Spring Security、Hibernate、jQuery、Backbone.js 的帮助下创建了一个 Java 应用程序。我不使用 JSP 和 EL。我的应用程序是单页 AJAX 样式。我的用户(=客户端)成功登录,控制器将他重定向到客户端的个人页面,控制器的一种方法将用户名作为字符串返回给我。我应该如何使用它来显示在页面中?

@RequestMapping(value = "/client", method = RequestMethod.GET)
public String client(Locale locale, Model model, ModelMap modelMap, Principal principal) {
    String currentUser = getActiveUser(modelMap, principal);
    System.out.println("Current user is " + currentUser);
              /*The username of the current user is written in the
                    Eclipse console successfully*/
    return "forward:/pages/client.html";
}

public String getActiveUser(ModelMap modelMap, Principal principal) {
        String name = principal.getName();
        modelMap.addAttribute("userName", name);
        return name;
    }

任何帮助高度赞赏。

4

3 回答 3

1

像这样的东西:

//import org.springframework.security.core.userdetails.User;

 @RequestMapping(value="/login", method = RequestMethod.GET)
  public String printUser(ModelMap model) {

      User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
      String name = user.getUsername(); //get logged in username

      model.addAttribute("username", name);
      return "homepage";

  }

(或者)

    @RequestMapping(value="/login", method = RequestMethod.GET)
      public String printUser(ModelMap model) {

          Authentication auth = SecurityContextHolder.getContext().getAuthentication();
          String name = auth.getName(); //get logged in username

          model.addAttribute("username", name);
          return "homepage";
}
于 2013-10-30T13:43:55.800 回答
0

HTML是静态的,您不能将登录的用户名动态放入其中。将其更改为 jsp 和以上答案将帮助您显示登录的用户名。

于 2013-11-02T17:29:30.240 回答
0

您可以使用<sec:authentication property="principal.username" />. 见http://docs.spring.io/spring-security/site/docs/3.0.x/reference/taglibs.html

于 2013-10-30T13:27:26.427 回答