2010-06-15 60 views
6

trong ứng dụng Grails của tôi, tôi có một vài bộ lọc an ninh đơn giản (xin lưu ý nó chỉ là một nguyên mẫu, không phải là một ứng dụng thương mại:Chuyển hướng sau khi đăng nhập?

securityCheckFilter(controller:'overview', invert:true) { 
      before = { 
       if(!session?.gaSession?.gaUser) { 
        flash.message = "You are not authorised to see this page. Please login." 
        redirect(controller:'overview',action:'login') 
        return false 
       } 
       return true 
      } 
     } 

Có nghĩa là, ngoài các điều khiển 'tổng quan' để xử lý đăng nhập/đăng ký, tất cả các bộ điều khiển khác yêu cầu xác thực vấn đề là tôi muốn thực hiện dòng chảy điển hình này:.

(1) cố gắng sử dụng bảo vệ url (2) chuyển hướng để đăng nhập (3) đăng nhập thành công (4) chuyển hướng đến url

Trong mã của tôi nó hoạt động cho đến thời điểm 3, nhưng tôi là thiếu 4.

Bất kỳ gợi ý?

Trả lời

6

Nó thực sự khá dễ dàng. Chỉ cần

  • trình mục tiêu URI (từ điểm 1 trong câu hỏi của bạn) như một tham số để action login/xem
  • đảm bảo hình thức đăng nhập của bạn chuyển tiếp tham số này để hành động xác thực (ví dụ. Qua một lĩnh vực tiềm ẩn)
  • trong hành động xác thực, nếu đăng nhập thành công, chỉ cần chuyển hướng đến này URI

để có được mục tiêu URI (trong bộ lọc của bạn), chỉ cần loại bỏ các đường dẫn ngữ cảnh từ phía trước URI:

def targetURI = request.forwardURI - request.contextPath 
+1

cảm ơn một triệu! – Mulone

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