컨트롤러 메서드 대신 작업을 수행하기 위해 javascript를 사용하고 있기 때문에 해당 동작이 렌더링되기 전에 사용자가 시간 초과되었는지 확인해야합니다. 이렇게하려면 내가 추가하고 다음과 같이 내 application_controller.rb에서 쿠키를 삭제 시도 : 사용자가 기한 내에 만료되었는지 확인
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
내 자바 스크립트 파일에
: 그러나myCookie = getCookie("signed_in");
if (myCookie == null)
{
//redirect to sign in page
} else {
//perform my action
}
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
}
return decodeURI(dc.substring(begin + prefix.length, end));
}
,이 세션 제한 시간에 작동하지 않는 것 , 로그 아웃시에만. 나는 이것을 달성하기위한 몇 가지 해키 방법을 보았지만 Devise 또는 Warden에서 사용자가 시간 초과되었거나 사용자가 있었는지 조치를 취하는 지 테스트하는 방법을 사용하거나 재정의하는 것으로부터 직접적으로 아무것도 찾을 수없는 것 같습니다. 시간 초과. 나는 Rails 5와 Devise 4.2.1을 사용 중이다.