Yêu cầu thg 3 7, 2019 3:20 CH 152 0 2
  • 152 0 2
0

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

Chia sẻ
  • 152 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 CÂU TRẢ LỜI


Đã trả lời thg 3 8, 2019 4:37 SA
Đã được chấp nhận
+3

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

Chia sẻ
Avatar Hoàng Đức Quân @devil_boom_129
thg 3 8, 2019 9:01 SA

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 ạ

Đã trả lời thg 3 8, 2019 1:45 SA
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.

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í