2014-10-09 17 views
6

Tôi đã có vai trò người dùng: user, manager, admin. Tôi cần phải xác thực chúng trong bộ điều khiển (phương pháp). Ví dụ chỉ admin có thể xóa (bây giờ nó trông như thế này, cần phải thay đổi điều đó chỉ quản trị nên được phép):Khung chơi, Scala: xác thực Người dùng theo Vai trò

def deleteBook(id: Int) = DBAction { 
    findById(id) match { 
     case Some(entity) => { 
      books.filter(_.id === id).delete 
      Ok("") 
     } 
     case None => Ok("") 
    } 
} 

Tôi đã nhiều bộ điều khiển và phương pháp. Tôi cần xác thực trước yêu cầu quy trình (ví dụ: xóa sách). Tệp của tôi routes chứa:

... 
DELETE  /books/:id     @controllers.Book.deleteBook(id: Int) 
... 

Một số tuyến đường chỉ có thể truy cập được với quản trị viên và người quản lý. Một số dành cho tất cả các loại người dùng.

Tôi hiện đang xem deadbolt2scala mô-đun ủy quyền để phát.

Bạn có thể giới thiệu cách tốt nhất để xác thực người dùng đa ngôn ngữ trong scala playframework không?

Trả lời

1

Tôi đã quản lý để thực hiện việc này bằng cách sử dụng StackableControllers được cung cấp bởi https://github.com/t2v/stackable-controller Về cơ bản, tôi sử dụng danh sách điều khiển truy cập cơ bản do tệp tin application.conf cung cấp. Tôi bắt đầu bằng cách kiểm tra xem có người dùng nào trong yêu cầu của tôi không. Nếu có, tôi có thể kiểm tra xem anh ấy có đủ quyền truy cập để thực hiện hành động hay không.

Tính năng này cũng có thể được triển khai bằng cách sử dụng thành phần BodyParser. Tuy nhiên, tôi chưa bao giờ làm điều đó, vì vậy lời khuyên của người khác có thể tốt hơn cho bạn.

Các vấn đề liên quan