laravel - 尝试登录时有没有办法检查“adminPassword”?
问题描述
问题是如果我使用adminPassword
数据库中的值,我的登录将无法通过。
最初,用户登录后,将提示他们更改默认密码。
我们被问到为什么我的帐户无法访问这个和那个的问题。
由于他们更改了密码,我们无法在更新其角色后检查他们是否已经拥有访问权限。
所以,我的目标是放置一个adminPassword
我可以登录他们的帐户并检查它是否已经可以访问的地方 - 他们的访问权限。
我试图覆盖attemptlogin
. 首先是使用andif
检查凭据是否正确。(正常登录)password
email
如果没有找到具有该password
值的用户,则下一步是检查adminPassword
. (类似管理员的登录)我似乎无法解决这个问题。
protected function attemptLogin(Request $request)
{
if($this->guard()->attempt($this->credentials($request), $request->has('remember')))
{
return true;
}
$email = request('email');
dump($email);
$password = request('password');
dump($password);
if(Auth::attempt(['email' => $email, 'adminPassword' => $password]))
{
return true;
}
// $credentials = array(['email' => $this->credentials($request)['email'], 'adminPassword' => \Hash::make($this->credentials($request)['password'])]);
// return $this->guard()->attempt(
// reset($credentials), $request->has('remember')
// );
}
实际结果是使用 adminPassword 时仍然可以登录。
解决方案
Hash::check()
我在对数据库上的密码值和散列密码使用方法后,通过手动记录用户来解决它。
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
if($this->guard()->attempt($this->credentials($request), $request->has('remember')))
return true;
$user = User::where('email', request('email'))->first();
if($user) {
if(\Hash::check(request('password'), $user->adminPassword)) {
Auth::login($user);
session()->put('justAdmin', true);
return true;
}
}
return false;
}
推荐阅读
- python - 如何使用 Python Opencv 检测特定区域内的运动?
- elasticsearch - Kibana 无法正确识别地理位置字段
- arrays - 为什么 "a=( * )" 为 '*' 中的每个文件名而不是每个单词分配一个包含一个元素的数组?
- angularjs - 如何在基于组件的 AngularJS 应用程序中将 $filter 服务注入自定义指令
- python - 为什么在 TensorFlow 实现中使用 `tensorflow.python.ops.x` 而不是 `tf.x`
- autodesk-forge - 将具有不同单位的模型加载到 Forge 查看器中
- excel - 将日期分配给变量时出现类型不匹配错误
- objective-c - 如何在 iOS 中启用智能反转?(Objective C 和 cydia 越狱应用)
- c# - 如何制作一个行为类似于组合框但具有可编辑文本框的用户控件
- c# - 75以下和50以下整数的正则表达式