如果用户使用基本身份验证,是否可以从网站注销用户?
杀戮会话是不够的,因为一旦用户通过身份验证,每个请求都包含登录信息,因此用户下次使用相同的凭据访问站点时会自动登录.
到目前为止,唯一的解决方案是关闭浏览器,但从可用性的角度来看,这是不可接受的.
我使用基本的HTTP身份验证通过基本的LDAP授权改进了我的GWT/GXT应用程序.当我启动新浏览器时,它运行良好 - 我得到提示并获得对公司LDAP的授权.我的问题 - 除非我关闭/重新打开浏览器,否则我无法注销.我可以调试并查看如何SecurityContextLogoutHandler#logout
调用以及执行以下代码
if (invalidateHttpSession) {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
}
SecurityContextHolder.clearContext();
Run Code Online (Sandbox Code Playgroud)
然而,它似乎没有影响,因为网站被重新加载,我永远不会得到另一个HTTP身份验证提示,除非我重新启动浏览器(甚至清除缓存/ cookie将无济于事).这是applicationContext.xml的相关部分
<security:http auto-config='true'>
<security:intercept-url pattern="/reports/**" access="ROLE_USER" />
<security:http-basic />
<security:logout logout-url="/reports/logout"
logout-success-url="/reports/Application.html" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
我试图定义自定义LogoutSuccessHandler
,做authentication.setAuthenticated(false);
,但也没有任何影响
这里有什么东西我在这里不见了?非常感谢您的帮助
我在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
Run Code Online (Sandbox Code Playgroud)
在应用程序控制器中我有:
before_filter :login_required
Run Code Online (Sandbox Code Playgroud)
在sessions_controller我有:
skip_before_filter :login_required
Run Code Online (Sandbox Code Playgroud)
我的问题是,当用户使用http基本身份验证进行身份验证时,他/她不会注销.会话被销毁,但用户可以毫无问题地导航到受限制的页面.通过插件进行会话身份验证不会发生此问题.如何使这种方法摆脱基本的认证?
我目前正在使用以下命令从站点检索数据:
wget http://www.example.com --user=joe --password=schmoe --auth-no-challenge
Run Code Online (Sandbox Code Playgroud)
我将其扩展为递归,但是,我的理解是这将在每个请求上重新发送 HTTP 身份验证凭据。
因此,是否可以运行一次基本 HTTP 身份验证,捕获 cookie,然后使用这些 cookie 触发递归加载?
这似乎不起作用:
wget --save-cookies=cookies.txt --user=joe --password=schmoe --auth-no-challenge http://www.example.com
Run Code Online (Sandbox Code Playgroud)
其次是:
wget --load-cookies=cookies.txt -r -p http://www.example.com/pages.html
Run Code Online (Sandbox Code Playgroud) 我对Web浏览器的基本身份验证有点困惑.我原以为Web浏览器只会在上一个响应中收到HTTP 401状态后发送Authorization标头.但是,Chrome似乎会随后向每个请求发送Authorization标头.它有一次我输入的数据,以响应我网站上的401,并随每条消息一起发送(根据Chrome和我的网络服务器附带的开发人员工具).这是预期的行为吗?是否有一些标题我应该用我的401来推断授权的东西不应该被缓存?我目前正在使用WWW-Authenticate标头.
iis basic-authentication http-headers wcf-data-services http-status-code-401