我是Rails 4和Devise 3的用户。
在路由文件中,我使用如下代码来防止未经认证(未登录)的用户访问某个页面:
这会将我重定向到用户/登录页面,但我希望用户被重定向到根目录。因此,我还在路由页面上添加了以下内容:
但这将会破坏我在sessions_controllers中所做的工作:
这将不再显示。因此,我希望有另一种解决方案,可以直接将用户重定向到根目录,而无需使用
以下内容可能与将用户重定向到根目录无关,但我想更多地解释为什么要在sessions_controller中覆盖new方法。我将登录和注册视图移动到了主页。在这种情况下,我还需要修改错误消息,使它们出现在主页上,而不是重定向用户到user/sign_in以显示错误。我使用ajax实现了这一点。
更新
我正在寻找的是像这样的东西:
在路由文件中,我使用如下代码来防止未经认证(未登录)的用户访问某个页面:
authenticate :user do
#page to protect
end
这会将我重定向到用户/登录页面,但我希望用户被重定向到根目录。因此,我还在路由页面上添加了以下内容:
get 'user/sign_in' => redirect('/')
但这将会破坏我在sessions_controllers中所做的工作:
def new
return render :json => {:success => false, :type => "signinn", :errors => ["You have to confirm your email address before continuing."]}
end
这将不再显示。因此,我希望有另一种解决方案,可以直接将用户重定向到根目录,而无需使用
authenticate:user
,然后get'user/sign_in' => redirect('/')
。以下内容可能与将用户重定向到根目录无关,但我想更多地解释为什么要在sessions_controller中覆盖new方法。我将登录和注册视图移动到了主页。在这种情况下,我还需要修改错误消息,使它们出现在主页上,而不是重定向用户到user/sign_in以显示错误。我使用ajax实现了这一点。
更新
我正在寻找的是像这样的东西:
if user_authenticated?
#show the protected page
else
# redirect the user to the ROOT
end