我有一个使用devise进行认证的rails 3应用程序,并且想要使用javascript来查看用户是否已登录。最好的方法是什么?使用javascript来检查是否用设计登录
回答
由于设计是基于监狱长,你可以使用看守的回调来设置附加Cookie,将来自JS可见的(不像服务器唯一会话cookie)在您的devise.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
它是否适用于Rails 4? – SsouLlesS 2015-12-24 15:42:04
@SsouLlesS差不多。我不得不改变删除行(出于某种原因,'cookies.delete'没有从浏览器中删除cookie,我在注销时将'0'作为'value'和'expire'分配给'Time.now'。 – 2016-05-17 16:59:21
它看起来像Rails在cookies客户端存储会话。
我会在您登录时检查应用程序中的Cookie(console.log(document.cookies)
),并在退出时查看有没有。
这样,您将很容易地看到如何检查您是否连接到客户端。
这是我检查document.cookie时所得到的结果,如果它已登录或注销,则有所作为:__utma = 111872281.2045911381.1309470856.1334590129.1334935149.157; __utmz = 111872281.1309470856.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(无); __utmc = 111872281 – Solomon 2012-04-20 19:47:39
设计饼干是HttpOnly,这意味着你不能从JavaScript读取它们。为了这个工作,我认为你需要设置你自己的cookie。 – Steve 2012-11-30 04:34:09
请添加更多细节以获得更好的建议 – ControlAltDel 2012-04-20 15:45:43
可能需要进一步的细节?我在我的应用程序中使用设计进行身份验证,并想知道如何检查用户是否使用JavaScript进行身份验证? – Solomon 2012-04-20 16:03:04
@Solomon:我不知道Rails是如何工作的,但您可以检查cookie(PHP)或隐藏输入(ASP.NET)以查看会话ID。 – 2012-04-20 16:51:51