hỏi về đăng nhập trong laravel
em đang muốn làm về đăng nhập trong laravel,với mỗi id người dùng chỉ có thể đăng nhập và sửa thông tin của bản thân họ trong controller
public function post_login_check(Request $request){
$arr =[
'tutor_email' => $request->tutor_email,
'tutor_password' => md5($request->tutor_password),
];
if(Auth::guard('tutor')->attempt($arr))
{
// Session::put('tutor_id',$result->tutor_id);
return redirect()->route('pages.registration');
}else{
return redirect()->route('pages.login')->with('message_err','bạn đã nhập sai tên đăng nhập hoặc mật khẩu');
}
trong app\tutor
class Tutor extends Authenticatable implements MustVerifyEmail
{
protected $table = "tutor";
protected $primaryKey = "tutor_id";
use Notifiable;
protected $fillable=[
'tutor_email','tutor_password','tutor_id',
];
protected $hidden=[
'tutor_password',
];
protected $guard = 'tutor';
}
trong config\auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
//xac thuc cho tutor
'tutor' => [
'driver' => 'session',
'provider' => 'tutor',
],
'tutor-api' => [
'driver' => 'token',
'provider' => 'tutor',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'tutor' => [
'driver' => 'eloquent',
'model' => App\Tutor::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'tutor' => [
'provider' => 'tutor',
'table' => 'password_resets',
'expire' =>6,
],
],
em bị lỗi này,mọi người giúp e với ạ
2 CÂU TRẢ LỜI
Lỗi quá rõ ràng rồi mà bạn, bạn đang gửi request lên với 2 request name là tutor_email và tutor_password trong khi trong hàm validateCre khai bào 1 array có key là password. Trong form HTML sửa name từ tutor_password => password xem
Xịn quá @huusu1996
mình xửa name trong html thành password,trong controler
$arr =[
'tutor_email' => $request->tutor_email,
'password' => md5($request->password),
];
if(Auth::guard('tutor')->attempt($arr))
{
return redirect()->route('pages.registration');
}else{
return redirect()->route('pages.login')->with('message_err','bạn đã nhập sai tên đăng nhập hoặc mật khẩu');
}
mình dd($arr) thấy giống hệt trong csdl mà nó vẫn toàn vào else thì là lỗi gì ạ,giúp mình với
@cq522138 password là raw password thôi bạn ơi. Không cần md5, laravel sẽ tự compare hash mà.
Trong model b thêm hàm này xem sao:
public function getAuthPassword()
{
return $this->tutor_password;
}
không được bạn ơi,vẫn bị lỗi ạ
@cq522138 trong controller sửa như này xem
$arr =[
'tutor_email' => $request->tutor_email,
'password' => $request->tutor_password,
];
t sửa vậy nhưng code thì chạy nhưng nó sẽ chỉ chạy vào else trong controller, dd($arr) nó có dữ liệu đúng như trong csdl nhưng kết quả vẫn chỉ vào else
@cq522138 bỏ md5 với mk ở trong csdl mã hóa rồi chứ
sửa rồi mà không được ạ
Bạn sử dụng hàm attempt($arr), nó sẽ gọi tới hàm validateCredentials(), mà $arr truyền vào k có index là
password
kìa@cq522138 Thớt đã resolved được vấn đề này chưa nhỉ?