我正在使用Devise on Rails 4.1 我的问题是关于助手及其与会话的关系。 current_user:告诉您是否有用户会话可供用户使用。 user_signed_in:告诉你用户是否被认证。devise rails current_user vs user_signed_in?
我不明白如果user_signed_in可以有一个current_user?是假的?
这两种方法有什么区别,它与会话有什么关系。
THanks。 Richard Madson
我正在使用Devise on Rails 4.1 我的问题是关于助手及其与会话的关系。 current_user:告诉您是否有用户会话可供用户使用。 user_signed_in:告诉你用户是否被认证。devise rails current_user vs user_signed_in?
我不明白如果user_signed_in可以有一个current_user?是假的?
这两种方法有什么区别,它与会话有什么关系。
THanks。 Richard Madson
current_user方法返回当前登录的用户,而user_signed_in?方法用于验证任何用户是否已登录并返回true或false。如果user_signed_in?为false,则current_user方法将返回nil。
https://github.com/plataformatec/devise#controller-filters-and-helpers
user_signed_in?
被提供为方便。如果user_signed_in?
是false
,那么您的说法是正确的,因此永远不会有current_user
。
在devise source code,我们可以看到:
def #{mapping}_signed_in?
!!current_#{mapping}
end
(其中user
采取的#{mapping}
的地方)
user_signed_in?
只是返回的current_user
的感实性,即,如果false
是current_user
nil
。