Yêu cầu Jul 19th, 2020 1:57 p.m. 171 0 5
  • 171 0 5
0

Kiểm tra vai trò đang đăng nhập trong laravel

Chia sẻ
  • 171 0 5

Một user có nhiều vai trò, có cách nào để e kiểm tra được user đang đăng nhập với vai trò nào không ạ

5 CÂU TRẢ LỜI


Đã trả lời Jul 20th, 2020 12:41 a.m.
+4

bạn hãy tách riêng bảng users và roles ra, tạo thêm một bảng user_role, lúc này thì users và roles có quan hệ n-n. Nhưng đó là trường hợp user trong một lần đăng nhập có thể đảm nhiệm tất cả các quyền của nó. Còn theo câu hỏi của bạn thì mình lại đang hiểu rằng một lần đăng nhập của bạn, user lại chỉ được kích hoạt một trong những quyền của nó? Có phải không nhỉ?

Chia sẻ
Avatar Dương Siêu @duongdosieu224
Jul 23rd, 2020 4:00 a.m.

dạ đúng rồi, trường hợp của em là đang quan hệ n-n nhưng khi đăng nhập chỉ kích họat một vai trò đó a

Avatar Dương Mạnh Hoàng @duong.manh.hoang
Jul 25th, 2020 2:22 p.m.

@duongdosieu224 thế thì bạn phải cho người dùng được chọn role lúc đăng nhập nhỉ? Hoặc là đăng nhập theo tuỳ link sẽ là tuỳ role. Sau đó bạn lưu lại role đó vào session hoặc cookie rồi xử lý như phân quyền bt

Đã trả lời Jul 19th, 2020 2:16 p.m.
+3

Vai trò này thì bạn định nghĩa là một field của user khi lấy user ra thì field này sẽ cho bạn biết vai trò của user đó. Hoặc bạn tạo một bảng về vai trò (role) và ở bảng này bạn có thêm vai trò của bạn ở đây và tạo relationship với user https://laravel.com/docs/7.x/eloquent-relationships#many-to-many, ở docs của laravel cũng có ví dụ ntn

Chia sẻ
Đã trả lời Jul 20th, 2020 12:31 a.m.
+3

Trong TH 1 user có nhiều vai trò thì bạn tạo 3 bảng users (id), roles (id), user_role (id, role_id, user_id) thì sẽ định nghĩa được 1 user có nhiều vai trò. Còn để kiểm tra được thì bạn có thể làm bằng cách viết 1 middleware trong đó lấy tất cả các role của user đó rồi in_array() với role bạn cần check. đó là ý tưởng

Chia sẻ
Đã trả lời Jul 20th, 2020 12:45 a.m.
+3

Thường thì khi thực hiện phân quyền cho user thì mình sẽ thiết kế gồm 3 bảng như sau: users, role, user_role(trung gian) rồi khi trả về dữ liệu của user đang đăng nhập thì trả thêm cả role vào nữa thôi, thường thì sẽ dùng eloquent để lấy quan hệ user-role

Chia sẻ
Đã trả lời Jul 19th, 2020 11:14 p.m.
+1

bọn có thể thêm 1 column role tại bảng user hoặc thêm 1 bảng roles mới liên kết với bảng user để giúp bạn xác định xem user đang login co role là như nào để xem thông tin của người dùng đang đăng nhập trong hệ thống bạn có thể dùng $request->user() hoặc Auth::user()

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí