我们正在尝试扩展Devise(3.1.1)登录/注册方法来处理AJAX请求,但是他们仍然坚持使用可确认的逻辑.通常,如果用户在确认其帐户之前登录设计,他们将被重定向到登录屏幕,并显示以下消息:"您必须在继续之前确认您的帐户." 我们无法弄清楚Devise在哪里检查确认并决定重定向.
这是我们的扩展的sessions_controller代码.它适用于成功和失败的登录尝试:
# CUSTOM (Mix of actual devise controller method and ajax customization from http://natashatherobot.com/devise-rails-sign-in/):
def create
# (NOTE: If user is not confirmed, execution will never get this far...)
respond_to do |format|
format.html do
# Copied from original create method:
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
format.js do
# Derived from Natasha AJAX recipe:
self.resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
sign_in(resource_name, resource)
return render …Run Code Online (Sandbox Code Playgroud) 好奇人们通常如何处理这个问题.我的策略是拥有授权的根路由和未经授权的根路由.
授权用户将直接发送到我的marionette.js单页应用程序,未经过授权的用户将被发送到标准的rails登录页面,并可选择登录或注册.
您似乎可以将这些全部组合到单页应用程序中.您可以根据附加到元素的类来显示/隐藏ui元素,这些元素基于查看它们所需的授权(注册,管理,管理员等).您还可以在路由器中添加某种"before_filter",以检查用户是否可以根据其角色访问此路由.
在这种情况下,我不确定如何处理登录/注册.您可以设置自己的api路由,这些路由可以通过POST来传递设计工作吗?
思考?策略?这里最好的做法是什么?