2011-01-13 41 views
5

Tôi có một hành động cho phép người dùng thay đổi mật khẩu của mình. Khi mọi thứ suôn sẻ, tôi muốn đăng xuất anh ấy và hiển thị một thông báo rằng mọi thứ diễn ra tốt đẹp và bây giờ anh ấy cần phải đăng nhập bằng mật khẩu mới của mình.Thông báo đăng xuất an ninh của Grails Spring

tôi đã cố gắng:

flash.message = "You may now login with your new password" 
redirect (controller: 'logout') 

Thing là Thoát điều khiển làm cho chuyển hướng đến:

redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 

Và tin nhắn nhấp nháy của tôi không còn ở đó khi người dùng chắc chắn đăng xuất khỏi và trở lại trên trang chính. Bất kỳ ý tưởng làm thế nào để làm cho nó hoạt động hoặc có thể một số cách giải quyết?

+1

Chỉ cần tò mò, tại sao bạn đăng nhập chúng ra? Nếu tôi đang sử dụng hệ thống, tôi sẽ không muốn đăng xuất sau khi thay đổi mật khẩu của mình. –

+0

Không có lý do đặc biệt. Tôi chỉ nghĩ rằng nó là tốt hơn theo cách đó;) – jjczopek

Trả lời

3

LogoutController chỉ có tiện ích. Có một bộ lọc chặn chuyển hướng của mình và thực hiện các logic logout, vì vậy bạn chỉ có thể chuyển hướng trực tiếp đến rằng:

flash.message = "You may now login with your new password" 
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 
+3

Điều này thực sự làm việc? Khi tôi đã thử nó, nó không. Nếu tôi chuyển hướng đến 'filterProcessesUrl' cùng với một' flash.message' thông báo flash có sẵn cho 'filterProcessesUrl', nhưng sau đó nó chuyển hướng đến' logout.afterLogoutUrl' và sau đó mất bất kỳ thông báo flash nào trong chuyển hướng thứ 2. Vấn đề grails 4 năm tuổi này nói về nó http://jira.grails.org/browse/GRAILS-2336 Để có được điều này để làm việc, tôi nghĩ rằng 'filterProcessesUrl' sẽ cần phải xem nếu nó nhận được một' flash. message' và sau đó đặt lại để đảm bảo rằng nó được truyền đi. –

+1

Tôi đã thử đề xuất này, nhưng không thể tiết lộ một flash.message. Tôi đang sử dụng Grails 2.1.1 –

+1

Tôi đã thử điều này với spring-security-core-2.0-RC2 và nó không hoạt động với nó. 'Debug nói DEBUG logout.SimpleUrlLogoutSuccessHandler - Sử dụng Url mặc định:/login' và bỏ qua giá trị được đặt cho grails.plugin.springsecurity.logout.afterLogoutUrl = '/ login/auth'. Nhật ký gỡ lỗi cho thấy đăng xuất được chuyển hướng để đăng nhập, sau đó đăng nhập được chuyển hướng đến đăng nhập/auth – spock99

0

Đây là một công việc xung quanh cho vấn đề này:

  • Vô hiệu hóa phiên
  • Thiết lập các tin nhắn nhấp nháy
  • Redirect đến một trang trống
  • Sau đó chúng tôi chạy jQuery delayfadeutAndRemove trên đèn flash nhắn div mà sau đó chuyển hướng đến bộ điều khiển logout

Đó không phải là hoàn hảo nhưng nó được thông điệp đến người dùng và đưa họ trở lại trang đăng nhập

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