我用角度客户端编写了一个简单的 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];参数[];默认消息[用户名]];默认消息[не может быть пусто]] ]
看起来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