当前位置: 首页 > 知识库问答 >
问题:

在Angular Spring Security应用程序中找不到错误

壤驷瑾瑜
2023-03-14

我用角度客户端编写了一个简单的 spring 安全项目。当我将数据从 angular 中的登录表单发送到 java 应用程序时,java 会向我返回我发送空的消息,但在角度中,在发送之前我检查它,它不是空的。

请帮忙,我想不出出了什么问题=(

日志: 2019-07-15 15:30:12.127 WARN 8156---[nio-8080-exec-2]. w. s. m. s. DefaultHandlerExceptionResolver:已解决[org.springframework.web.bind.方法中索引为0的参数验证失败:公共org.springframework.http.责任实体com.grokonez.jwtauthentication.controller.AuthRestAPIs.authenticate用户(com.grokonez.jwtauthentication.message.request.登录表单),有1个错误:[用户名字段中对象登录表单中的字段错误:拒绝值[null];代码[NotBlank.loginForm.username,NotBlank.username,NotBlank.java.lang.字符串, NotBlank];参数[org.springframework.context.support.默认消息源可解析代码[loginForm.username,用户名];参数[];默认消息[用户名]];默认消息 [не может быть пусто]] ]

爪哇代码:

  Model:

public class LoginForm {
    @NotBlank
    @Size(min=3, max = 60)
    private String username;

    @NotBlank
    @Size(min = 6, max = 40)
    private String password; ...

Controller:

@PostMapping("/signin")
    public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginForm loginRequest) {

        Authentication authentication = authenticationManager.authenticate(
                new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()));

        SecurityContextHolder.getContext().setAuthentication(authentication);

        String jwt = jwtProvider.generateJwtToken(authentication);
        UserDetails userDetails = (UserDetails) authentication.getPrincipal();
        return ResponseEntity.ok(new JwtResponse(jwt, userDetails.getUsername(), userDetails.getAuthorities()));
    }

角形零件:

服务:

   const httpOptions = {
  headers: new HttpHeaders({'Content-Type': 'application/json'})
};
@Injectable({
  providedIn: 'root'
})
export class AuthService {

  private loginUrl = 'http://localhost:8080/api/auth/signin';
  private registrationUrl = 'http://localhost:8080/api/auth/signup';

  constructor(private http: HttpClient) { }

  signUp(registrationInfo: RegistrationInfo): Observable<string> {
    return this.http.post<string>(this.registrationUrl, registrationInfo, httpOptions);
  }
  login(loginInfo: LoginInfo): Observable<JwtInfo> {
    console.log(loginInfo)
    return this.http.post<JwtInfo>(this.loginUrl, loginInfo, httpOptions);
  }

组件:

login(data) {
    this.loginInfo = new LoginInfo(data.userName, data.password);
    console.log(data.userName, data.password);
    this.authService.login(this.loginInfo).subscribe(
      (jwtResponse: JwtInfo) => {
        this.tokenStorage.saveToken(jwtResponse.accessToken);
        this.tokenStorage.saveUserName(jwtResponse.username);
        this.tokenStorage.saveAutorities(jwtResponse.authorities);

        this.username = this.tokenStorage.getUserName();
        this.authorities = this.tokenStorage.getAutorities();
        this.isLoggedIn = true;

        this.reloadPage();
      }, error => {
        this.warningMessage = error.error.message;
        this.isLoginFailed = true;
      }
      );
  }

有问题的日志:2019-07-15 15:30:12.127 WARN 8156-[nio-8080-exec-2]. w . s . m . s . defaulthandlerexception resolver:Resolved[org . spring framework . web . bind . methoargumentnotvalidexception:对方法中索引0处的参数验证失败:public org . spring framework . http . response entity com . grokonez . jwtauthentication . controller . authrestapis . authenticateuser(com . grokonez . jjcodes[not blank . loginform . username,NotBlank.username,NotBlank.java.lang.String,not blank];arguments[org . spring framework . context . support . defaultmessagesourceresolvable:codes[loginform . username,username];参数[];默认消息[用户名]];默认消息[не может быть пусто]] ]

共有1个答案

终逸仙
2023-03-14

看起来LoginForm模型带有小写的“username”,您正在发送console.log(data.username,data.password);

用户名区分大小写的问题..将角度登录模型转换为小写(用户名)

 类似资料:
  • 我已经创建了一个全新的angular 7应用程序,并将其与SCSS一起安装。在构建应用程序之后,我会得到以下错误

  • 我在Eclipse CDT(使用Windows 7)中出现以下错误。如何更正? 错误:在PATH PATH=[C:\cygwin\bin; C:/Program Files/Java /jre1.6.0/bin/client; C:/Program Files/Java /jre1.6.0/bin; C:/Program Files/Java /jre1.6.0/lib/i386; C:\Prog

  • 在我开始写错误之前,我正在运行macOS Sierra并使用Xcode 7.3.1。 所以我正在从我的应用程序创建存档,我验证了应用程序并通过了验证,但上传到App Store时,我收到错误“ERROR ITMS-90167 No. app bundles in the pack”。 我已经检查了我所有的文件,我什么都有。 < li >我有所有的预置描述文件。 < li >我发布了“iOS分发版”

  • 我编写了一个双向自动验证restful service cleint来通过HTTPS在端口8443上使用安全的restful web服务。以下是application.properties的部分内容: trust.store=classpath:truststore.jks key.store=类路径:keystore.jks key.store.password=xyz123 下面是配置Rest

  • 我从2.0更新了Android Studio。x到3。x上周末。项目迁移是完美的,构建是伟大的。现在,从2小时开始,我无法解释为什么,我无法构建,我现在在Glide上出现了这个错误: 错误:(26,22)错误:找不到符号类 之前一切都很好,我没有改变任何东西(gradle或配置),现在出现了这个错误... 有关Glide的信息,在我的Gradle中: GlideApp文件是自动生成的(我选中了它)

  • 我刚刚在Intellij中设置了Scala(以及SDK和JDK) 文件- 创建了一个项目。 项目名称src下-- 我做错了什么。请帮忙

  • 我第一次手工将AngularJS和spring boot应用程序连接在一起。我遇到的问题是@RestController没有返回索引页: 目录: 它会继续呈现默认的404错误页面: ----------------更新1------------------ 我添加了一个配置文件: 重新控制器 主要类别: 上面的主类仍然返回默认的404错误页面。

  • 我有一个集群,我可以成功启动,至少这是出现在web UI上,我在其中看到这些信息 我收到这个消息 使用REST应用程序提交协议运行Spark。使用Spark默认的log4j配置文件:org/apache/spark/log4j-defaults.properties 16/08/31 16:59:06 INFO restsubmissionclient:提交请求以在Spark://name25:6