我在rails应用程序中安装了restful_authentication插件,其session_controller具有如下所示的destroy方法:
def destroy self.current_user.forget_me if logged_in? cookies.delete :auth_token reset_session flash[:notice] = "You have been logged out." redirect_back_or_default('/') end
在应用程序控制器中我有:
before_filter :login_required
在sessions_controller我有:
skip_before_filter :login_required
我的问题是,当用户使用http基本身份验证进行身份验证时,他/她不会注销.会话被销毁,但用户可以毫无问题地导航到受限制的页面.通过插件进行会话身份验证不会发生此问题.如何使这种方法摆脱基本的认证?
服务器端无法在这种情况下"注销"用户.当用户通过基本身份验证登录时,浏览器会存储身份验证信息,并在每次请求时通过http标头发送身份验证参数.如果用户使用基本身份验证登录,他/她将必须关闭他/她的浏览器窗口才能注销.