我正在尝试为不必登录以获取某些服务的访问者设置cancan权限。为了澄清这一点,例如: -
我有一个搜索控制器,它有新的搜索操作。在相关的新查看器中有一些链接,其中一些我不希望被非登录用户看到,其他人必须为他们看到!..
我试图在控制器搜索中写下这些行: -
before_filter :authenticate_user! # this forces the user to log-in ( I don't want this )
load_and_authorize_resource # this doesn't work without authenticate_user
before_filter :load_permissions
在新视图中我写了这个
<%= link_to "Listing Managment", extras_path if can? :index, Role %>
但由于(可以?)
,它给我带来了错误提示:当我在过滤器之前移除控制器3时出现错误 以上。但是当我把它们放进去时仍然不方便。
答案 0 :(得分:2)
在您的cancan初始化程序中,您可以使用类似
的内容user = current_user || User.new
这样cancan会接收当前用户(可能有角色),如果没有current_user(你没有登录),将返回一个没有活动角色的虚拟用户记录(匿名用户)。