我有一个 Rails 3.2 应用程序,需要用户登录 (current_user) 才能访问事件页面,这些页面是子域。我正在使用设计进行身份验证。
如果我提供了指向事件页面的直接链接,有什么方法可以让用户一次性访问它?然后,如果他们尝试访问不同的活动页面,或者如果他们离开并在未来某个日期返回同一活动页面,我希望他们被提示登录(或注册)。
我在railscasts上看过来宾帐户的一集,但似乎用户可以继续以来宾身份登录,而无需使用这种方法进行注册。
这是我的事件控制器代码:
def show
@event = Event.find_by_name(request.subdomain)
if params[:id].present?
@event = Event.find(params[:id])
end
# if @event.present? and @event.videos.present?
@video = Video.find_by_id(params[:video]) || @event.videos.first
# else
# @video = @event.videos.first
# end
# @json = Event.all.to_gmaps4rails
if @user = current_user
else
flash[:alert] = "Please sign in first"
redirect_to sign_up_url(:subdomain => false)
end
end
感谢您的任何帮助/建议...
编辑:只是为了提供更多上下文:
我将尝试每周将很多用户吸引到这个活动页面,如果我只是通过社交媒体和电子邮件等发送一个链接,我不确定将单独的哈希硬编码到网址中是否可行/实用.
由于用户将单击此链接并直接进入相关页面,因此不会触发任何操作来创建单独的访客模型,因此我认为答案必须基于会话,在现有用户模型中添加一些列,但确保每个用户只使用一次。我在想也许一个IP地址会起作用?