如何删除 Laravel Auth Hashing(用 mysql hashing 代替)?
How to remove Laravel Auth Hashing (to replace it by mysql hashing)?
我添加了注册,我不想使用 laravels 哈希而是 mysql 哈希(因为我希望现有用户仍然能够连接)。
所以我一步一步地做,现在我只是尝试注册然后登录而不进行任何散列。我的 table 中的凭据是正确的,但我得到
"message":"The given data was invalid.","errors":{"email":["These credentials do not match our records."]}
我试过在LoginController.php
中设置
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
public function username()
{
return 'email';
}
public function password()
{
return 'email';
}
public function setPasswordAttribute($password){
$this->attributes['password'] = $password;
}
public function Login(Request $request)
{
if(Auth::attempt(['email' => $request->email, 'pwd' => $request->password, 'password' => $request->password])){
$user = Auth::user();
$username = $user->nom;
return response()->json([
'status' => 'success',
'user' => $username,
]);
} else {
return response()->json([
'status' => 'error',
'user' => 'Unauthorized Access'
]);
}
}
}
我想我应该覆盖另一个函数,但找不到哪个。
你能帮我一些忙吗?
尽管您尝试实现的目标被认为是不安全的,但要删除 Laravel 的密码散列,您需要将其添加到您的 User
模型中:
public function setPasswordAttribute($password){
$this->attributes['password'] = $password;
}
而不是在您的控制器中,并确保删除 RegisterController
中的 brcypt()
方法
要添加您的 MySQL 自己的哈希方法,请更新您的控制器以在注册时创建用户时插入 RAW 查询
我添加了注册,我不想使用 laravels 哈希而是 mysql 哈希(因为我希望现有用户仍然能够连接)。 所以我一步一步地做,现在我只是尝试注册然后登录而不进行任何散列。我的 table 中的凭据是正确的,但我得到 "message":"The given data was invalid.","errors":{"email":["These credentials do not match our records."]}
我试过在LoginController.php
中设置<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
public function username()
{
return 'email';
}
public function password()
{
return 'email';
}
public function setPasswordAttribute($password){
$this->attributes['password'] = $password;
}
public function Login(Request $request)
{
if(Auth::attempt(['email' => $request->email, 'pwd' => $request->password, 'password' => $request->password])){
$user = Auth::user();
$username = $user->nom;
return response()->json([
'status' => 'success',
'user' => $username,
]);
} else {
return response()->json([
'status' => 'error',
'user' => 'Unauthorized Access'
]);
}
}
}
我想我应该覆盖另一个函数,但找不到哪个。 你能帮我一些忙吗?
尽管您尝试实现的目标被认为是不安全的,但要删除 Laravel 的密码散列,您需要将其添加到您的 User
模型中:
public function setPasswordAttribute($password){
$this->attributes['password'] = $password;
}
而不是在您的控制器中,并确保删除 RegisterController
brcypt()
方法
要添加您的 MySQL 自己的哈希方法,请更新您的控制器以在注册时创建用户时插入 RAW 查询