【发布时间】:2013-03-15 15:02:28
【问题描述】:
我设置了一个假用户来演示我的应用。这个想法是,不会登录的访问者应该仍然能够看到真实用户将拥有的所有功能。当未登录的访问者访问该站点时,该应用将登录演示用户,访问者将看到属于该演示用户的虚假数据。
考虑到这个目标,我这样设置我的应用程序控制器。
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_current_user
def demo_user
@demo_user ||= User.find_by_email("demo@example.com")
end
protected
def set_current_user
if current_user.nil?
sign_in(demo_user)
end
end
end
我的问题是我不小心让真实用户无法登录。只要真实用户按下“登录”链接,他们就会被告知他们已经登录(作为演示用户)。
很明显,我所做的与“最佳实践”相去甚远。在这种情况下,聪明的程序员会怎么做?如何让我漂亮的自动登录演示用户保持登录状态,但仍让真实用户登录?
【问题讨论】:
-
那你为什么需要一个假用户呢?什么是非登录用户看不到而登录用户可以看到的内容?您如何阻止未登录的用户看不到它?您还使未登录用户可以轻松地执行真实用户可以执行的任何操作(即创建帖子、删除帖子等)。
-
如何添加另一个带有登录演示用户的按钮,这样您就不必弄乱之前的过滤器了?
标签: ruby-on-rails devise