Php 如何检查用户输入的登录信息是否正确?
我正在尝试创建一个登录页面,如果用户名或密码错误,我会告诉试图登录的人是错误的用户名或密码 这是我在LoginController中的登录函数,我尝试添加带有Php 如何检查用户输入的登录信息是否正确?,php,laravel,Php,Laravel,我正在尝试创建一个登录页面,如果用户名或密码错误,我会告诉试图登录的人是错误的用户名或密码 这是我在LoginController中的登录函数,我尝试添加带有Auth::trunt的if语句,但由于发送的是对象而不是数组,因此出现了错误。是否有方法同时进行验证和检查。我所看到的例子根本无法验证 protected function validateLogin(Request $request) { $request->validate([ $this->username(
Auth::trunt
的if语句,但由于发送的是对象而不是数组,因此出现了错误。是否有方法同时进行验证和检查。我所看到的例子根本无法验证
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string',
'password' => 'required|string',
]);
if(Auth::attempt($request)) {
return redirect()->intended('dashboard');
}
}
在my Login.vue中,我的规则设置如下:
rules: {
username: {required: true, message: 'Required', trigger: 'blur',},
password: {required: true, message: 'Required', trigger: 'blur'},
},
我怎么能两者兼得呢
要显示错误,这是我的代码
<el-row v-if="errors && Object.keys(errors).length > 0" class="mb-2">
<el-col :span="24">
<el-alert
v-for="(value, key, index) in errors"
v-bind:key="index"
:title="value[0]"
type="error"
center
:closable="false"
effect="dark">
</el-alert>
</el-col>
</el-row>
理想情况下,我希望通过发送自定义消息,因为我的页面使用另一种语言。也许在vue中的submit方法中有一种方法
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.loading = true;
this.$inertia.post('/login', {
scard: this.form.scard,
password: this.form.password,
}).then(() => this.loading = false);
} else {
return false;
}
});
},
你的代码非常接近!问题在于,
$request
确实是一个对象。但是,如果使用$request->all()
,则将有一个包含当前请求中所有数据的数组:
protected function validateLogin(Request $request)
{
$request->validate([
'username' => 'required|string',
'password' => 'required|string',
]);
if(Auth::attempt($request->all())) {
return redirect()->intended('dashboard');
}
return response()->json(['error' => 'Oops! Your login failed. Verify your username & password and try again.'], 401);
}
更新 查看前端代码很有帮助。以下是如何处理失败的登录:
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.loading = true;
this.$inertia.post('/login', {
scard: this.form.scard,
password: this.form.password,
})
.then(() => this.loading = false)
.catch(() => {
this.errors = {
'credentials' => ['Your login failed! Please verify your credentials and try again.']
};
});
} else {
return false;
}
});
},
你的代码非常接近!问题在于,
$request
确实是一个对象。但是,如果使用$request->all()
,则将有一个包含当前请求中所有数据的数组:
protected function validateLogin(Request $request)
{
$request->validate([
'username' => 'required|string',
'password' => 'required|string',
]);
if(Auth::attempt($request->all())) {
return redirect()->intended('dashboard');
}
return response()->json(['error' => 'Oops! Your login failed. Verify your username & password and try again.'], 401);
}
更新 查看前端代码很有帮助。以下是如何处理失败的登录:
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.loading = true;
this.$inertia.post('/login', {
scard: this.form.scard,
password: this.form.password,
})
.then(() => this.loading = false)
.catch(() => {
this.errors = {
'credentials' => ['Your login failed! Please verify your credentials and try again.']
};
});
} else {
return false;
}
});
},
$this->username()
是否返回“username”
?原因您的规则应该是“username”=>“required | string”
。另外,Auth::trunt()
需要一个凭证数组,而不是整个$request
对象,因此只使用$request->(“用户名”、“密码”)
通知用户凭证整体不正确就足够了(默认响应失败)。如果你再进一步,你给出的是关于有效用户名的信息。@lagbox是的,这是一个很好的观察,我只想显示正常的登录失败。再试一次。
@NancyGomez我已更新了答案,以显示如何在登录失败时显示错误消息。$this->username()
是否返回“username”
?原因您的规则应该是“username”=>“required | string”
。另外,Auth::trunt()
需要一个凭证数组,而不是整个$request
对象,因此只使用$request->(“用户名”、“密码”)
通知用户凭证整体不正确就足够了(默认响应失败)。如果你再进一步,你给出的是关于有效用户名的信息。@lagbox是的,这是一个很好的观察,我只想显示正常的登录失败。再试一次。
@NancyGomez我已更新了我的答案,以显示如何在登录失败时显示错误消息。我现在如何向用户发送消息,说明哪个错误?现在它只是不登录,也不显示错误或消息,我只是手动处理。如果您的登录请求失败,请手动向用户显示一条消息,内容为“哎呀!您的登录失败了。请验证您的用户名和密码,然后重试。”这是我在不查看您的JS的情况下所能提供的最好消息。实际上,我收回了这条消息。您需要从这个函数返回一个错误响应,以便在JavaScript端处理它。请参阅上面我的编辑。这对我不起作用,提交按钮只是显示为加载,然后停止加载,没有出现错误弹出,我甚至尝试在我的提交方法中的某个位置添加错误,但没有成功?当然,如果您没有编写任何会弹出错误的代码,则不会出现错误弹出。。。如果没有看到你的JavaScript,我会情不自禁。我现在如何向用户发送一条消息,说明哪一条是错误的?现在它只是不登录,也不显示错误或消息,我只是手动处理。如果您的登录请求失败,请手动向用户显示一条消息,内容为“哎呀!您的登录失败了。请验证您的用户名和密码,然后重试。”这是我在不查看您的JS的情况下所能提供的最好消息。实际上,我收回了这条消息。您需要从这个函数返回一个错误响应,以便在JavaScript端处理它。请参阅上面我的编辑。这对我不起作用,提交按钮只是显示为加载,然后停止加载,没有出现错误弹出,我甚至尝试在我的提交方法中的某个位置添加错误,但没有成功?当然,如果您没有编写任何会弹出错误的代码,则不会出现错误弹出。。。我不能不看你的JavaScript。