我在rails 5中使用了一个关于身份验证的方便教程,而没有使用设计gem(教程here)
退出后,系统会立即将用户重定向到' / login',用户无法立即重新登录。如果他们刷新页面,则没有问题 - 身份验证正常工作,但无需导航,然后返回/登录或刷新页面,用户无法立即输入凭据并重新登录。相反,当他们输入凭据并点击“提交”时。什么都没发生(凭据保留在字段中,按钮看起来像是被点击了,但没有其他事情发生)
以下是会话控制器的相关代码(与教程中的步骤13相同)
def create
user = User.find_by_email(params[:email])
# If the user exists AND the password entered is correct.
if user && user.authenticate(params[:password])
# Save the user id inside the browser cookie. This is how we keep the user
# logged in when they navigate around our website.
session[:user_id] = user.id
redirect_to '/'
else
# If user's login doesn't work, send them back to the login form.
redirect_to '/login'
end
end
def destroy
session[:user_id] = nil
redirect_to '/login'
end
注意:教程说Rails 4,但我使用的是rails 5,其中一切似乎都有相同的一个小例外;我不得不将before_filter更改为before_action
答案 0 :(得分:0)
如果任何人都可以使用它,我可以通过关闭链接中的涡轮链接来解决此问题:
在application.html.erb中,替换
<%= link_to "Logout", '/logout' %>
有
<%= link_to "Logout", '/logout', data: { turbolinks: false } %>