gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:12 24 4
gpt4 key购买 nike

我在我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com