java - 在 spring + angular 中获取当前登录的用户

标签 java angularjs spring spring-security spring-boot

我在我的 Spring Boot 应用程序中使用 Spring Security,我想从 Principal#getName 获取当前登录的用户,但我有一个模板解析错误,它包含我想要的用户名得到。

这是我的 Controller :

import java.security.Principal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class PageController {

   @RequestMapping(value = "/api/loggeduser", method = RequestMethod.GET)
   public String printWelcome(ModelMap model, Principal principal) {
        String name = null;
        if (principal !=null) {
            name = principal.getName();
        }
        model.addAttribute("username", name);

        return name;
   } 

}

这是我获取登录用户的 AngularJs 函数:

app.controller('Usercontr', function($scope, $http) {
    $http.get("/api/loggeduser").success(function (data) {
        $scope.nom = data;  
        console.log($scope.nom) 
    })
});

这里是错误:

Error resolving template "kamel.mili", template might not exist or might not be accessible by any of the configured Template Resolvers

Kamel.mili 是登录的用户名。你能帮我么。我仅将 thymeleaf 用于登录页面,其他一切都是 html + AngularJs。我不知道为什么 thymeleaf 会使用这个 Controller 。

最佳答案

向您的 Controller 添加一个 @ResponseBody 注释:

@ResponseBody
@RequestMapping(value = "/api/loggeduser", method = RequestMethod.GET)
public String printWelcome(ModelMap model, Principal principal ) { ... }

当您使用 @Controller 构造型注释时,Spring MVC 将尝试将您的 String 返回值解析为 View,因此错误:

Error resolving template "kamel.mili", template might not exist or might not be accessible by any of the configured Template Resolvers

如果您只想将返回值写入响应主体,您可以将 Controller 设为 @RestController 或使用 @ResponseBody 注释特定 Controller 。

这有点离题,但由于您使用的是客户端 View 渲染,所以 ModelMap 非常无用。您可以安全地摆脱它。

关于java - 在 spring + angular 中获取当前登录的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36315726/

相关文章:

java - ActivityMap 类型的方法 updateUI() 必须覆盖或实现父类(super class)型方法

java - Tyrus - 存储客户端收到的消息

javascript - angularjs 和expressjs 路由崩溃(噢,啪!)

java - DB2 日期的 SQL 错误代码 -245

java - Apache Kafka 放弃了我的生产者和消费者

java - Ruby on Rails vs Grails vs Spring ROO vs Spring App

java - Box2D LibGDX 绳索问题

java - Spring MVC、域对象和@JsonIgnore

javascript - 输入类型 'number' 的 ng-model 不工作

javascript - 如何在没有表单的情况下在 Angular js 中应用验证并检查所有字段是否应填写?