2012-03-27 15 views
5

Tôi đang cố gắng tìm cách chuyển hướng đến một trang nhất định (trong trường hợp của tôi là trang thanh toán) người dùng không phải là một đăng ký hợp lệ đang chạy.Symfony2: Cách chuyển hướng trên một trang cụ thể khi người dùng không được phép truy cập mẫu url

Tôi biết tôi có thể làm điều đó bằng cách đặt một kiểm tra isGranted trong tất cả các hành động của tôi, nhưng tôi không thích giải pháp này vì nó có vẻ là một sự lãng phí thời gian cho số lượng hành động tôi có.

Tôi đã xem thông số tường lửa.access_denied_url, nhưng tôi không muốn liên kết AccessDenied với trang thanh toán vì, ví dụ: quyền truy cập trang quản trị bị từ chối cho bất kỳ người dùng nào không có ROLE_ADMIN và đang được chuyển hướng đến trang thanh toán không có ý nghĩa gì.

Tôi đã có cử tri kiểm tra xem người dùng có hợp lệ hay không và cấp quyền truy cập trong trường hợp đó, nhưng làm cách nào tôi có thể quản lý để sử dụng cử tri này khi người dùng cố gắng tiếp cận một mẫu nhất định và chuyển hướng anh ấy/cô ấy khi truy cập bị từ chối?

Cảm ơn trước!

Trả lời

1

Bạn có thể sử dụng JMSAopBundle.

Từ tài liệu:

bó này thêm khả năng AOP để Symfony2.

Nếu bạn chưa nghe nói về AOP, về cơ bản cho phép bạn tách mối quan tâm chéo (ví dụ: kiểm tra bảo mật) thành một lớp chuyên dụng và không phải lặp lại mã đó ở tất cả các nơi cần thiết.

Nói cách khác, điều này cho phép bạn thực thi mã tùy chỉnh trước và sau khi yêu cầu các phương thức nhất định trong lớp dịch vụ hoặc bộ điều khiển của bạn. Bạn cũng có thể chọn bỏ qua lời gọi của phương thức gốc hoặc ném ngoại lệ.

+1

Tại sao bạn không thể sử dụng trình nghe đơn giản trên bộ điều khiển? – meze

+1

Tôi đoán gói này thực hiện công việc của mình thông qua người nghe. Ofcourse bạn có thể đạt được điều đó cho mình thông qua người nghe. Chỉnh sửa –

6

Trong app/config/security.yml thêm dưới an ninh:

access_denied_url:/foo/error403

Symfony sẽ sau đó chuyển hướng tất cả các trang mà người dùng không thể truy cập vào trang foo// error403.

+1

, nó sẽ chuyển tiếp (yêu cầu nội bộ phụ) –

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