Rails 设计会话控制器

Posted

技术标签:

【中文标题】Rails 设计会话控制器【英文标题】:Rails devise Sessions Controller 【发布时间】:2011-12-12 21:21:17 【问题描述】:

在设计中,许多教授如何完成某些事情的页面都需要编辑会话控制器。我使用这个https://github.com/fortuity/rails3-subdomain-devise/wiki/Tutorial-(Walkthrough) 设置了设计它并没有超过制作会话控制器。我怎么做一个。 (如果真的很简单,对不起,请给我几个简单的步骤)

【问题讨论】:

【参考方案1】:

使用rails g controller MySessions 创建您的会话控制器。然后在您的控制器内部将其从继承 ApplicationController 更改为设计控制器,如下所示:

class MySessionsController < Devise::SessionsController

#your session logic here

end

您想要覆盖的控制器中的任何逻辑都可以通过调用该方法并插入您自己的逻辑来覆盖。对于该控制器中的内容列表,您可以在其Github 页面上查看代码。如果您不想覆盖他们的方法,您可以将它们排除在外,或者直接调用 super。

def new
  super
end

【讨论】:

感谢@janders 的有用反馈。顺便说一句,为什么它是MySessions 而不是源代码中的Sessions 有什么原因吗?这是一个错字吗,或者它的不同并不重要? 你的控制器的名字无关紧要,只要它继承自Devise::SessionsController 啊,刚刚意识到它继承自Devise::SessionsController 而不仅仅是DeviseController。有道理,谢谢。 实际上控制器的名称很重要。在 Devise 中有很多地方比较 controller_name"sessions" 的当前值。此外,它使用的 i18n 键基于控制器名称等。您应该只调用您的子类SesssionsController

以上是关于Rails 设计会话控制器的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 如何覆盖设计SessionsController以在用户登录时执行特定任务?

设计会话限制问题

Rails,设计认证,CSRF 问题

在 Rails 控制台会话中识别路线

使用protect_from_forgery时,Rails 403 会话响应过期

rails同一页面上不同控制器的两种形式