如何让用户只有在访问过另一个控制器时才能访问控制器操作。
例如,我有一组产品将转到NumberController('new'action) - 我阻止匿名者直接转到NumberController中的新动作,只允许匿名用户来自Products页面匿名用户在此之前选择的。
我读过的一个解决方案是,您可以使用会话cookie来禁止用户访问NumberController中的新操作,另一个使用范围查询,例如:
Product.find(params[:id]).Number.find(params[:product_id])
或类似的东西,并使用嵌套资源。有什么想法吗?
答案 0 :(得分:1)
这个答案贴在这个问题上:
Authorizing non-logged-in user behavior in rails with cancan and devise
说明了如何使用CanCan授权处理匿名(未登录)用户。这很简单。
另外,重要的是,CanCan目前已经过时了。 CanCanCan (https://github.com/CanCanCommunity/cancancan)是CanCan的一个相当简单的替代品,可以积极维护,与Rails 4一起使用等。它可以很好地处理您的匿名用户问题。
答案 1 :(得分:0)