Tôi có ứng dụng 3 đường ray sử dụng để xác thực và muốn sử dụng javascript để xem liệu người dùng có đăng nhập hay không. Cách tốt nhất để làm điều này là gì?Sử dụng javascript để kiểm tra xem đã đăng nhập với thiết lập
Trả lời
Kể từ khi lập mưu dựa trên Warden, bạn có thể sử dụng callbacks Warden để thiết lập một cookie bổ sung mà sẽ được hiển thị từ js (không giống như các máy chủ duy nhất phiên cookie), ví dụ như trong devise.rb của bạn:
Warden::Manager.after_set_user do |user,auth,opts|
auth.cookies[:signed_in] = 1
end
Warden::Manager.before_logout do |user,auth,opts|
auth.cookies.delete :signed_in
end
Tính năng này có hoạt động với Rails 4 không? – SsouLlesS
@SsouLlesS Hầu như. Tôi đã phải thay đổi dòng xóa (vì lý do nào đó, 'cookies.delete' không xóa cookie khỏi trình duyệt. Tôi đã gán' 0' làm 'giá trị' và' hết hạn' thành 'Time.now' khi đăng xuất. –
Dường như phiên Rails lưu trữ trên máy khách trong cookies.
Tôi muốn kiểm tra cookie trong ứng dụng của bạn khi bạn đăng nhập (console.log(document.cookies)
) và xem có gì ở đây là không phải ở đó khi bạn đăng xuất.
Bằng cách này, bạn sẽ dễ dàng xem cách kiểm tra xem bạn có được kết nối hay không trên máy khách.
đây là những gì tôi nhận được khi tôi kiểm tra document.cookie, và nó doesn ' t tạo sự khác biệt nếu đăng nhập hoặc đăng xuất: __utma = 111872281.2045911381.1309470856.1334590129.1334935149.157; __utmz = 111872281.1309470856.1.1.utmcsr = (trực tiếp) | utmccn = (trực tiếp) | utmcmd = (không có); __utmc = 111872281 – Solomon
Cookie phát sinh là HttpOnly có nghĩa là bạn không thể đọc chúng từ javascript. Để làm việc này tôi nghĩ bạn sẽ cần phải thiết lập cookie của riêng bạn. – Steve
xin vui lòng thêm thông tin chi tiết để được tư vấn tốt hơn – ControlAltDel
có thể cần thêm chi tiết nào? Tôi sử dụng tính năng xác thực trong ứng dụng của mình và muốn biết cách kiểm tra xem người dùng có được xác thực bằng javascript không? – Solomon
@Solomon: Tôi không biết cách Rails hoạt động, nhưng bạn có thể kiểm tra cookie (PHP) hoặc đầu vào bị ẩn (ASP.NET) để xem id phiên. –