Asked Jul 15th, 2019 3:54 AM 159 0 2
  • 159 0 2
+1

hỏi về đăng nhập trong laravel

Share
  • 159 0 2

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 ạ

Hải Hà @HaiHaChan
Jul 15th, 2019 4:03 AM

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

+1
| Reply
Share
Aug 2nd, 2019 5:40 AM

@cq522138 Thớt đã resolved được vấn đề này chưa nhỉ?

0
| Reply
Share

2 ANSWERS


Answered Jul 15th, 2019 4:02 AM
+1

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

Share
Linh Vu @cq522138
Jul 15th, 2019 4:16 AM
Jul 15th, 2019 8:47 AM

Xịn quá @huusu1996 👏👏👏

0
| Reply
Share
Linh Vu @cq522138
Jul 15th, 2019 9:27 AM

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

0
| Reply
Share
Aug 2nd, 2019 5:37 AM

@cq522138 password là raw password thôi bạn ơi. Không cần md5, laravel sẽ tự compare hash mà.

0
| Reply
Share
Answered Jul 15th, 2019 5:09 AM
+1

Trong model b thêm hàm này xem sao:

public function getAuthPassword()
{
    return $this->tutor_password;
}
Share
Linh Vu @cq522138
Jul 15th, 2019 9:20 AM

không được bạn ơi,vẫn bị lỗi ạ

0
| Reply
Share
No Naem @Naem
Jul 15th, 2019 9:53 AM

@cq522138 làm tương tự bạn này nhưng bạn thử bỏ md5() đi xem sao :v

+1
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jul 15th, 2019 10:10 AM

@cq522138 trong controller sửa như này xem

$arr =[
            'tutor_email' => $request->tutor_email,
            'password' => $request->tutor_password,
];
0
| Reply
Share
Linh Vu @cq522138
Jul 15th, 2019 10:15 AM

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

0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jul 15th, 2019 10:28 AM

@cq522138 bỏ md5 với mk ở trong csdl mã hóa rồi chứ

0
| Reply
Share
Linh Vu @cq522138
Jul 15th, 2019 10:43 AM

sửa rồi mà không được ạ

0
| Reply
Share