在某些情况下,我希望确保一个控制器操作(或路由)只能由另一个控制器操作访问,而不能通过键入访问。例如,我有几个“交换机”控制器操作,它们解析内部分析,设置初始值,然后将不同的用户发送到他们各自的目的地(每个目的地都有自己的控制器操作)。
这种情况的一个示例:用户应该只能先查看已通过切换板操作的记录。
这样做的一种方法是以某种方式涉及易腐烂的标记吗?(我在我的应用程序中使用AuthLogic )。
发布于 2011-03-12 07:16:07
我已经使用会话做了类似的事情。在我的例子中,一个动作有:
session[:boss_attack] = 1另一个动作是:
if session[:boss_attack] != 1
redirect_to :action => 'index' and return
else
session[:boss_attack] = 0
end 然后我会继续实际的行动。它似乎工作得很好:)
发布于 2011-03-12 13:51:59
正如@SpyrosP建议的那样,一种选择是使用会话。
为了清楚起见,会话应该是一个服务器端会话。如果你正在使用cookie会话,你应该考虑另一种存储方法。Rails cookie存储会话应该是安全的,但如果您不想让用户看到数据,甚至文档也建议使用其他方法(http://apidock.com/rails/ActionDispatch/Session/CookieStore)
如果您使用服务器端会话存储(http://apidock.com/rails/ActiveRecord/SessionStore),您的风险将大大降低。客户端浏览器上存储的惟一内容是映射到服务器端记录的cookie。Rails完成了所有繁重的任务,以避免会话劫持和固定攻击。
https://stackoverflow.com/questions/5279260
复制相似问题