Ruby on rails 3 在自定义控制器中使用Desive对用户进行身份验证

Ruby on rails 3 在自定义控制器中使用Desive对用户进行身份验证,ruby-on-rails-3,authentication,devise,Ruby On Rails 3,Authentication,Devise,我使用的是rails 3和Desive,我希望有一个SecurityController,在这里我调用诸如sign_in_user或reset_password之类的方法,这将是一个post,将用户名和密码之类的参数传递给它 我知道我可以使用before\u过滤器:authenticate\u user!但我想证明我自己。如果身份验证成功,则我希望该用户登录 我这样做的原因是因为我有一个iphone应用程序,它依赖于对web应用程序的身份验证来使用该应用程序。我自己还没有理由这样做,但如果您阅读

我使用的是rails 3和Desive,我希望有一个SecurityController,在这里我调用诸如sign_in_user或reset_password之类的方法,这将是一个post,将用户名和密码之类的参数传递给它

我知道我可以使用before\u过滤器:authenticate\u user!但我想证明我自己。如果身份验证成功,则我希望该用户登录


我这样做的原因是因为我有一个iphone应用程序,它依赖于对web应用程序的身份验证来使用该应用程序。

我自己还没有理由这样做,但如果您阅读了的“配置控制器”部分,它将展示如何创建扩展
designe::sessioncontroller
的自定义控制器,然后将身份验证路由指向该控制器。我想这就是你要问的——对吗

引用该页中的

如果视图级别的自定义不够,可以通过以下步骤自定义每个控制器:

1) 创建自定义控制器,例如Admins::SessionController:

class Admins::SessionsController < Devise::SessionsController
end
devise_for :admins, :controllers => { :sessions => "admins/sessions" }

3) 由于我们更改了控制器,它不会使用“设计/会话”视图,因此请记住将“设计/会话”复制到“管理/会话”。

我只想自定义两种方法…验证和重置密码。有没有一种方法可以让我不用扩展整个会话控制器,也不用重写其他方法?正如我所说,我没有尝试过这样扩展控制器,但是如果你必须重写任何东西,我会非常惊讶。扩展任何类型的类的全部要点是继承该类的正常行为,然后根据需要添加或修改。您不必重写任何内容,只需覆盖需要更改的内容。如果您需要在重写方法中的某个点调用默认行为,请使用
super
。我可以确认Steve所说的。如果您决定自定义一个控制器并包含Steve建议的代码行(以及复制必要的视图),那么Desive将完全一样工作,即使您将这些自定义控制器保留为空。任何您没有特别覆盖的操作都会默认为Desive的内置操作。通过调用
super