2012-03-30 23 views
8

Tôi đang sử dụng 'phát minh' để xác thực mật khẩu trong ruby ​​của tôi trên ứng dụng đường ray. Khi tôi đăng nhập thành công và tôi đóng trình duyệt và mở một cửa sổ trình duyệt mới, tôi vẫn đăng nhập. Cho phép nói rằng tôi đang sử dụng Chrome, tôi đóng mọi phiên bản của chrome rồi mở một phiên bản mới. Tôi vẫn đăng nhập. Cũng giống như trường hợp khi tôi đang sử dụng IE và Firefox.làm thế nào để xóa phiên phát hành trên trình duyệt đóng?

Tôi giả sử khi đóng cửa sổ và mở cửa sổ mới nên thiết lập phiên mới giữa máy chủ và trình duyệt phải không? Nếu tôi không đạt được điều đó thì sao?

tôi đã sử dụng thử nhấp vào nút đăng xuất trên sự kiện onbeforeunload của cửa sổ trình duyệt, nhưng nó không hoạt động khi nó đăng xuất khỏi ứng dụng trên bất kỳ hình thức gửi hoặc nhấp vào liên kết nào.

window.onbeforeunload = function() { 
    $('#logout_cls').click(); 
}; 

và thử gửi yêu cầu tới bộ điều khiển phiên hủy hoạt động để xóa phiên.

jQuery(window).bind(
    "close", 
    function(event) { 
      $.ajax({ 
      type: 'DELETE', 
      dataType: 'json', 
      url: $('#logout_cls').attr('href') 
      }); 
    }); 

nhưng tất cả điều này không hoạt động.

Trả lời

2

Đó thực sự là một tính năng. Facebook và khá nhiều trang web có xác thực thực hiện thông qua việc sử dụng cookie.

Tùy chọn của Devise Có thể nhớ "quản lý tạo và xóa mã thông báo để ghi nhớ người dùng từ cookie đã lưu". Nếu bạn không muốn điều đó, hãy xóa remember_token chuỗi và remember_created_at ngày giờ từ mô hình người dùng của bạn và xóa nút Remember Me khỏi trang đăng nhập của bạn.

+0

Tôi đã vô hiệu hóa chiến lược có thể ghi nhớ. Đây là cách mô hình của tôi là: devise: database_authenticatable,: recoverable,: trackable,: validatable Suy nghĩ? – user380692

+0

Đi tới 'db \ schema.rb'. Kiểm tra bảng người dùng của bạn. Liệu nó có một thuộc tính có tên 'remember_created_at' hoặc' remember_token'? Nếu có, thì bạn phải loại bỏ chúng. – Ashitaka

+0

Bạn có quản lý để giải quyết vấn đề này không? – Ashitaka

6

Hóa ra vấn đề là cách session_store của tôi được định cấu hình.

MyApp::Application.config.session_store :active_record_store, 
{:key => '_my_app_session', :secret => '5xb5x1g92e965b95b16e49x79gxx9999', :expire_after => 2.hours} 

Tôi đã xóa các tùy chọn và sự cố đã được giải quyết.

Tôi có một câu hỏi khác và đó là loại bỏ các tùy chọn hiện nó có bất kỳ rủi ro tiềm năng? Tôi không lưu trữ bất kỳ dữ liệu quan trọng trong phiên rõ ràng nhưng đưa vào dữ liệu tôi sẽ không muốn tiếp xúc.

Ứng dụng của tôi sẽ hoạt động sau vài ngày sẽ rất hữu ích khi nhận được câu trả lời cho điều này. Tôi googled những thứ cho một giờ hoặc lâu hơn nhưng không có quá nhiều may mắn.

Cảm ơn

+4

Nếu bạn có một câu hỏi khác, bạn có lẽ nên đăng nó như một câu hỏi riêng biệt (có thể với một liên kết đến cái này). –

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