代码之家  ›  专栏  ›  技术社区  ›  yogsma

如何从Spring Boot REST控制器获取角度视图中的用户ID

  •  0
  • yogsma  · 技术社区  · 9 年前

    在我的应用程序中,我使用Spring安全性使用数据库进行身份验证。重定向策略的一部分是,如果用户是管理员,则将用户重定向到管理员(主页),如果用户是用户,则将该用户重定向到用户页面。

    当角色为user的用户登录时,他会看到如下所示的用户页面:

    <html ng-app="benefitApp">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Benefit Application</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="/css/bootstrap.css" />
    <script src="https://code.angularjs.org/1.6.1/angular.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-resource.js"></script>
    <script type="text/javascript" src="./js/app.js"></script>
    </head>
    <body ng-controller="UserCtrl">
    <p>Hello <p th:text="${name}"></p></p>
    <div>
        <ul class="menu">        
            <li><a href='userProfile({{userid}})'>userprofile</a></li>                
        </ul>
        <div ng-view="ng-view"></div>
    </div>
    </body>
    </html>
    

    我试图将登录用户的id从REST控制器传递到此页面,如下所示:

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String userpage(Model model) {
        LOGGER.info(" Enter >> userpage() ");
        Authentication auth = SecurityContextHolder.getContext()
            .getAuthentication();
        String name = auth.getName();
        User user = userManager.findUserByEmail(name);
        model.addAttribute("name", name);
        model.addAttribute("userid", user.getId());
        return "user";
    }
    

    但我在user中没有获得任何userid。html页面。我错过了什么?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ajit Soman    9 年前

    userid 要发挥作用:

    <li><a href='userProfile({{userid}})'>userprofile</a></li> 
    

    这就是 方法

    由于您使用的是Thymeleaf,我建议您使用这样的表达式来绑定用户配置文件的链接: th:href="@{${link}}"

    @ 前缀用于指定链接和 $ 前缀用于绑定模型值,然后使用创建链接 th:href 这样地:

    <li><a th:href="@{'#/user/profile/' + ${userid}}">userprofile</a></li> 
    

    <div ng-init="userId = ${userid}"></div>
    

    <li><a ng-href="#/user/profile/{{userId}}">userprofile</a></li>