Asked Mar 7th, 3:20 PM 88 0 2
  • 88 0 2
0

Sử dụng gem Pundit bị lỗi

Share
  • 88 0 2

Mình vẫn đang chật vật với RoR cơ bản ở ngày 3. Mình dùng gem Devise và gem Pundit để làm Authorization như trong tut này http://railsapps.github.io/rails-authorization.html Tuy nhiên thì gặp lỗi như ảnh trên. Rốt cục phải sửa cụ thể ở đâu. Mọi người chỉ giúp với ạ.

Link git: https://github.com/BlazingRockStorm/let-us-go/tree/bug-Pundit

2 ANSWERS


Answered Mar 8th, 4:37 AM
Accepted
+2

hàm Pundit dùng 1 hàm tên là current_user để lấy ra người dùng hiện tại và xác thực trong file policy của nó

em set debug trong file policy xem có user trong đấy chưa

nếu chưa thì check lại hàm current_user xem có trả ra đúng ko (trong base_controller) thường Devise có hàm này nhưng cần check config có đúng ko nữa

Share
Hoàng Đức Quân @devil_boom_129
Mar 8th, 9:01 AM

em cảm ơn anh ạ. cuối cùng hoá ra em bị lỗi ở seed quên thêm seed kèm role. nên khi seed mặc định là role = "user", không phải "admin" 😂😂😂 khi chỉnh lại seed thì xong rồi ạ

0
| Reply
Share
Answered Mar 8th, 1:45 AM
0

Mình chưa dùng gem Pundit này bao giờ. Thông thường đối với việc check phân quyền mình lựa chọn gem CanCan. Nhưng mình mạnh dạn đoán lỗi do không xác thực được quyền của user với action hiện tại.

Bạn có thể tham khảo cách handle authorization errors ở link này: https://crypt.codemancers.com/posts/2018-07-29-leveraging-pundit/#handling-errors-on-authorization

Tuy nhiên đó chỉ là cách để handle lỗi, còn bạn vẫn phải thêm quyền cho user để có thể truy cập vào các action mong muốn.

Share