2013-12-20 93 views
4

嗨我正在我的网站上实现聊天/收件箱功能。当用户未登录并收到来自其他用户的消息时,该网站将向该消息的收件人发送电子邮件。但是,当用户登录时不会。检查用户是否登录laravel 4

我的问题是如何判断用户是否登录?例如,如果用户登录然后关闭浏览器,我的后端将不知道任何内容。

顺便说一句我正在Laravel 4建立一个Angularjs SPA与一个宁静的API。?

+0

我认为它更好的实现这在Angularjs中,而不是在PHP ...在PHP中,你可以做一些“愚蠢的”检查,如用户在线,如果他是在最后2分钟极其活跃的 –

+0

我该怎么做在angularjs?我的后端需要检查用户是否登录,然后决定是否发送电子邮件 – user1424508

+0

听有2 diffuses任务在你想做什么... 1:找出用户是否登录或不(PHP) Auth :: check()).... 2:找出用户是否在线或者没有这个任务你需要使用angularjs例如websocket –

回答

4

我建议使用Ajax 数据库时用户已登录。添加last_logged_in类型的列Date 因此,当用户登录时,它们会更新将他们的last_logged_in字段添加到当前日期。您可以随心所欲地执行此Ajax(非常小的性能问题)。要查看用户是否已登录,只需检查last_logged_in日期并将其与当前日期相比减去一段时间(1分钟)即可。

我不会建议使用它来发送电子邮件用户,因为这可能会导致大量垃圾邮件。 此外,您还可以使用is_logged_in字段,但不要单独使用它。

19

如果使用的是内置的Laravel验证:

if(Auth::check()) 
{ 
    //do something 
} 

如果您使用的哨兵:

if(Sentry::check()) 
{ 
    //do something 
} 
+0

我不明白。如果用户A是未登录的消息用户B,如何判断用户B是否已登录?我认为Auth :: check仅适用于当前用户,即发送已登录消息的用户? – user1424508

+2

嗨,在这种情况下,你需要在你的用户表中有一列。即'logged_in',如果用户登录设置它1.当他们注销时,将其设置为0. – Anam

+0

选中此列以检查用户是否登录 – Anam