java – 以弹簧角度获取当前登录的用户
我在
Spring Boot应用程序中使用Spring Security,我想从Principal#getName获取当前登录的用户,但我有模板解析错误,它包含我想要的用户名.
这是我的控制器: 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) }) }); 这是错误:
Kamel.mili是登录用户名.你能帮我么.我正在使用thymeleaf作为登录页面,其他一切都是html AngularJs.我不知道为什么百老汇会把它放在这个控制器上. 解决方法
将@ResponseBody注释添加到控制器:
@ResponseBody @RequestMapping(value = "/api/loggeduser",method = RequestMethod.GET) public String printWelcome(ModelMap model,Principal principal ) { ... } 当您使用@Controller构造型注释时,Spring MVC将尝试将您的String返回值解析为View,因此错误:
如果您只想将返回值写入响应主体,您可以将控制器设置为@RestController或使用@ResponseBody注释特定控制器. 这有点偏离主题,但由于您使用的是客户端视图渲染,因此ModelMap非常无用.你可以放心地摆脱它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |