rails 3:使用devise进行身份validation,如何允许使用guid而不是登录来访问报告页面

我的rails 3应用程序每个帐户只需要一个用户登录(例如,没有角色)。 我正在使用Devise,我很高兴。

但我的用户需要能够与其他不需要或不想登录帐户的经理共享一些屏幕(主要是状态报告)…

我正在考虑为每个这样的“外部”报告创建和存储一个guid(每个帐户+报告都是唯一的),所以链接如

http://myapp.mydomain.com/pagename?token=GUID_GOES_HERE 

将访问该页面(但只有该页面)

问题:

a)有没有办法允许登录帐户用户访问页面,但也允许guid绕过设计认证

b)帐户用户(例如,区域经理)是否有更好的方式与未登录的用户(例如,商店经理)共享某些报告屏幕?

如果这些页面不需要登录,那么它们不是真正的公共页面吗? 听起来像你应该创建一个不需要登录但需要令牌的新控制器。 路线可能是这样的,

get 'public_reports/:token' => 'public_reports#view'

并且控制器操作将根据令牌找到该报告并呈现适当的视图。

 class PublicReport < ApplicationController skip_before_filter :authenticate_user!, :only => [:view] def view @report = Report.find_by_token(params[:token]) if @report #render view... else #render report_missing view end end end