Я разрабатываю приложение и хочу отправить его в App Store, но мне постоянно отказывают, потому что группа проверки Apple не может войти в систему с моей демо-учетной записью.
После проверки журналов сервера кажется, что поле пароля не было отправлено в мой бэкэнд.
problem.spring.common.AdviceTraits Bad Request:
Validation failed for argument [0] in public
org.springframework.http.ResponseEntity<web.rest.UserJWTController$JWTToken>
web.rest.UserJWTController.authorize(web.rest.vm.LoginVM):
[Field error in object 'loginVM' on field 'password': rejected value [];
codes [Size.loginVM.password,Size.password,Size.java.lang.String,Size];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable:
codes [loginVM.password,password]; arguments [];
default message [password],100,4]; default message [个数必须在4和100之间]]
Но когда я тестирую локально, я не могу воспроизвести эту ошибку.
логин.страница.html
<form class="login-form">
<ion-input type="string" [(ngModel)]="account.username" name="username" placeholder="username"></ion-input>
<ion-input type="password" [(ngModel)]="account.password" name="password" placeholder="password"></ion-input>
<div style="width: 100%; height: 15px"></div>
<ion-button expand="block" (click)="doLogin()" color="warning" fill="outline">login</ion-button>
</form>
и мой логин.page.ts
export class LoginPage implements OnInit {
account: { username: string; password: string; rememberMe: boolean } = {
username: '',
password: '',
rememberMe: true
};
constructor(
public loginService: LoginService,
public toastController: ToastController,
public router: Router,
) {
}
ngOnInit() {
}
public doLogin() {
this.loginService.login(this.account).then(
() => {
const toast = await this.toastController.create({
message: 'log in success',
duration: 3000,
position: 'top'
});
await toast.present().then(() => history.back());
},
(err) => {
\\ some error handle
}
}
Я думал, что это может быть проблема с ngModel, но даже после того, как я перехожу к динамическим формам, Apple сообщает, что кнопка входа в систему не может быть нажата, я предполагаю, что привязка данных между html и моделью была нарушена, но я действительно просто не могу найти почему.
после изменения:
<form class="login-form" role="form" (ngSubmit)="doLogin()" [formGroup]="loginForm">
<ion-input type="text" class="form-control" name="username" id="username" placeholder="邮箱"
formControlName="username"></ion-input>
<ion-input type="password" class="form-control" name="password" id="password" placeholder="密码"
formControlName="password"></ion-input>
<ion-button [disabled]="loginForm.invalid" type="submit" expand="block" color="warning" fill="outline">登录</ion-button>
</form>
export class LoginPage implements OnInit {
loginForm = this.fb.group({
username: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(20)]],
password: ['', [Validators.required, Validators.minLength(4), Validators.maxLength(20)]],
rememberMe: [true]
});
constructor(
public loginService: LoginService,
public toastController: ToastController,
public router: Router,
private fb: FormBuilder
) {
}
ngOnInit() {
}
public doLogin() {
this.loginService.login({
username: this.loginForm.get('username')!.value,
password: this.loginForm.get('password')!.value,
rememberMe: this.loginForm.get('rememberMe')!.value
}).then(
async () => {
const toast = await this.toastController.create({
message: 'login success',
duration: 3000,
position: 'top'
});
await toast.present().then(() => history.back());
},
async (err) => {
\\ some error handler
}
);
}
}
ионная информация
Ionic:
Ionic CLI : 6.10.0 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 5.1.0
@angular-devkit/build-angular : 0.803.26
@angular-devkit/schematics : 8.3.26
@angular/cli : 8.3.26
@ionic/angular-toolkit : 2.2.0
Cordova:
Cordova CLI : 9.0.0 ([email protected])
Cordova Platforms : android 8.1.0, ios 5.1.1
Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 21 other plugins)
Utility:
cordova-res : 0.14.0
native-run : 1.0.0
System:
ios-deploy : 1.10.0
ios-sim : 8.0.2
NodeJS : v14.1.0 (/usr/local/Cellar/node/14.1.0/bin/node)
npm : 6.14.5
OS : macOS Catalina
Xcode : Xcode 11.5 Build version 11E608c
Я очень признателен за любую мысль, чтобы решить эту ошибку или позволить мне воспроизвести ошибку локально.
С наилучшими пожеланиями,
Венджи