问题描述
想做个logout的功能,网上搜索后发现document.execCommand("ClearAuthenticationCache","false");可以清除登录信息,但是这个只能用在IE上,非IE浏览器不支持。请问如何在非IE浏览器上实现类似功能?
解决方案
解决方案二:
这是后台的功能。。一般清除session就退出登录了。。就看你怎么保存登录信息的。
解决方案三:
引用1楼jordan102的回复:
这是后台的功能。。一般清除session就退出登录了。。就看你怎么保存登录信息的。
可能我的描述得不太清楚吧。我用的不是在网页里登录,而是用web登陆框。浏览器在登录一次后,会一直保留这个认证信息,每次HTTP请求都带有这个,所以我即使在后台清除了一些信息,浏览器下一次来的HTTP请求里仍然有认证信息,还是会自动登录的,除非浏览器关闭。IE下用document.execCommand("ClearAuthenticationCache","false");可以清除浏览器自动保存的认证信息,所以执行后,再次打开网页,就不会有认证信息了,web服务器就会提示认证出错,然后浏览器又会弹出那个登陆框,这样就达到了logout的功能了。
解决方案四:
好像是说服务器返回未认证错误即可,好像是401错误
解决方案五:
引用3楼p2227的回复:
好像是说服务器返回未认证错误即可,好像是401错误
这个方法我尝试过,不好用。因为浏览器可能会尝试几次都返回401错误后才出现登陆框,不同的浏览器尝试的次数还不一样。拒绝的次数少了,达不到logout的效果,次数多了,可能让人以为密码输入错了。
解决方案六:
引用4楼qllaoda的回复:
引用3楼p2227的回复:好像是说服务器返回未认证错误即可,好像是401错误这个方法我尝试过,不好用。因为浏览器可能会尝试几次都返回401错误后才出现登陆框,不同的浏览器尝试的次数还不一样。拒绝的次数少了,达不到logout的效果,次数多了,可能让人以为密码输入错了。
更郁闷的是,浏览器本身还会记录下原来的密码,即使弹出了登陆框,只需要多点几次确定就可以了。
解决方案七:
不用form提交登录改成ajax登录浏览器不就不会记录了
解决方案八:
引用6楼ifandui的回复:
不用form提交登录改成ajax登录浏览器不就不会记录了
我现在用的本来也不是form方式提交,而是用HTTP的认证登陆框
解决方案九:
引用4楼qllaoda的回复:
引用3楼p2227的回复:好像是说服务器返回未认证错误即可,好像是401错误这个方法我尝试过,不好用。因为浏览器可能会尝试几次都返回401错误后才出现登陆框,不同的浏览器尝试的次数还不一样。拒绝的次数少了,达不到logout的效果,次数多了,可能让人以为密码输入错了。
试一下返回401错误并强制关闭浏览器。然后你试验时最好有两台机,用虚拟机也行,因为本机的话会集成NTLM的window验证,除非你仅仅是用basic认证。当然如果你的服务器不是windows那就当我后面那句没说过吧。
解决方案十:
该回复于2011-11-17 13:02:54被版主删除
解决方案十一:
回帖加分!!!!
解决方案十二:
这个恐怕没几人知道,浏览器是否支持也说不准。为什么不用网页登录呢?我也关注一下这个答案。
解决方案十三:
引用8楼p2227的回复:
引用4楼qllaoda的回复:引用3楼p2227的回复:好像是说服务器返回未认证错误即可,好像是401错误这个方法我尝试过,不好用。因为浏览器可能会尝试几次都返回401错误后才出现登陆框,不同的浏览器尝试的次数还不一样。拒绝的次数少了,达不到logout的效果,次数多了,可能让人以为密码输入错了。试一下返回401错误并强制关闭浏览器。然后你……
可惜我用的就只是basic认证啊,而且web服务器是在单片机上运行的,功能比windows差远了。
解决方案十四:
引用12楼qllaoda的回复:
引用8楼p2227的回复:引用4楼qllaoda的回复:引用3楼p2227的回复:好像是说服务器返回未认证错误即可,好像是401错误这个方法我尝试过,不好用。因为浏览器可能会尝试几次都返回401错误后才出现登陆框,不同的浏览器尝试的次数还不一样。拒绝的次数少了,达不到logout的效果,次数多了,可能让人以为密码输入错了。试一下……
是这样子的,我这里有个现成的产品也是用http认证登录的,它有个退出,但代码我是看不到的,不过它退出后总是要求关闭当前窗口,而且我试过如果不关闭(即关闭的提示选否)那其实还是没退出。你就试一下返回401错误并强制关闭浏览器。
解决方案十五:
引用13楼p2227的回复:
是这样子的,我这里有个现成的产品也是用http认证登录的,它有个退出,但代码我是看不到的,不过它退出后总是要求关闭当前窗口,而且我试过如果不关闭(即关闭的提示选否)那其实还是没退出。你就试一下返回401错误并强制关闭浏览器。
关闭浏览器是可以的,这个可以确认。问题是关闭浏览器的动作可能会被浏览器警告拦截。
解决方案:
引用14楼qllaoda的回复:
引用13楼p2227的回复:是这样子的,我这里有个现成的产品也是用http认证登录的,它有个退出,但代码我是看不到的,不过它退出后总是要求关闭当前窗口,而且我试过如果不关闭(即关闭的提示选否)那其实还是没退出。你就试一下返回401错误并强制关闭浏览器。关闭浏览器是可以的,这个可以确认。问题是关闭浏览器的动作可能会被浏览器警告拦截。
那你就告诉用户退出一定要关闭浏览器啰
解决方案:
引用15楼p2227的回复:
那你就告诉用户退出一定要关闭浏览器啰
看来也只能这样了