Spring Security + REST 控制器 Post 方法不显示用户名
Posted
技术标签:
【中文标题】Spring Security + REST 控制器 Post 方法不显示用户名【英文标题】:Spring Security + REST controller Post method not displaying username 【发布时间】:2021-08-26 23:13:21 【问题描述】:我正在使用带有 Spring Security 的 Spring Boot 作为我的 Web 应用程序的身份验证。 我有一个控制器,它将 authenticationRequest(POJO) 参数作为@RequestBody
通过以 JSON 格式传递用户名和密码,从邮递员调用端点 /authenticate 但是当我打印值(用户名和密码)时,我只能看到密码被打印出来。经过多次尝试找不到用户名未填充的原因。
@RequestMapping(value="/authenticate",method=RequestMethod.POST)
public ResponseEntity<?> createAuthenticationToken(@RequestBody AuthenticationRequest authenticationRequest) throws Exception
System.out.println("authenticationRequest.getUserName()"+authenticationRequest.getUserName());
System.out.println("authenticationRequest.getPassword()"+authenticationRequest.getPassword());
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(authenticationRequest.getUserName(), authenticationRequest.getPassword()));
POJO 类
public class AuthenticationRequest
private String username;
private String password;
public AuthenticationRequest()
public AuthenticationRequest(String username, String password)
super();
this.username = username;
this.password = password;
public String getUserName()
return username;
public void setUserName(String username)
this.username = username;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
JSON(原始) “用户名”:“用户”, “密码”:“通过”
控制台
authenticationRequest.getUserName()null
authenticationRequest.getPassword()pass
【问题讨论】:
【参考方案1】:问题出在你的 getter 和 setter 上:
public String getUserName()
return username;
public void setUserName(String username)
this.username = username;
字母 n 应该很小,因为您的 JSON 包含带有小 n 的 username
。试试这样:
public String getUsername()
return username;
public void setUsername(String username)
this.username = username;
【讨论】:
以上是关于Spring Security + REST 控制器 Post 方法不显示用户名的主要内容,如果未能解决你的问题,请参考以下文章
仅使用 Spring Security 自定义令牌无状态保护 REST 控制器,同时保持常规状态完整 Web 登录正常工作
Angular 2 + CORS + 带有 Spring Security 的 Spring Boot Rest Controller
使用 REST API 的 Spring Security 身份验证?