什么是会话结束或到期时注销用户的最佳方式?
谢谢你的帮助.
我在这里看到了很多关于Facebook Graph API的问题,但我仍然没有找到使用它进行简单"登录"/"注销"操作的解决方案.看起来单一登录风格造成的混乱比利益更多.
我想知道是否有可能出现以下情况:
accessToken/ expirationDate创建).authorize:delegate:方法使用SSO执行登录(应用程序进入后台,登录在"全局"范围(Facebook App/Mobile Safari)中进行,请求用户凭据.accessToken和expirationDate保存到NSUserDefaults).logout:方法(现在已经退出,都accessToken和expirationDate从被删除NSUserDefaults)我意识到,当我打电话时logout:,我确实accessToken从我的App范围注销Facebook(无效),而不是从global范围(Facebook App/Mobile Safari)注销.在5.)当我尝试再次登录时,应用程序转到后台,并且像往常一样在Facebook App/Mobile Safari中再次登录尝试,但是我得到一个屏幕,说我已经登录:
你已经授权了
....按"好"继续.登录为...(不是吗?).
对于刚刚在我的应用程序中注销的用户来说,这是一种奇怪的行为.我的问题是:
"我可以从我的应用程序内部真正退出facebook(我的意思是'全球'范围)吗?这会影响使用facebook凭据的其他应用程序.但是,如果我不能这样做,我怎么能避免'奇怪'行为'在上面描述?
谢谢
我有2个网站.
在一个网站中这是真的:
session_is_registered('site1sess')
Run Code Online (Sandbox Code Playgroud)
在另一个中这是真的:
session_is_registered('site2sess')
Run Code Online (Sandbox Code Playgroud)
这些是我在登录时给用户的会话名称.我的问题是,当我从一个站点注销时,我也在另一个站点注销,因为我使用:
session_destroy();
Run Code Online (Sandbox Code Playgroud)
从site1或2注销从中删除所有会话变量的最佳方法是什么?谢谢.
我有一个用MVC 4编写的Intranet项目,它使用Windows身份验证来授权和验证用户.
我需要添加"以其他用户身份登录"功能.
经过一些搜索,我发现这个解决方案建议返回401,并创建了以下Action(使用表单调用):
//
// POST: /Home/LogOut
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOut()
{
return new HttpUnauthorizedResult();
}
Run Code Online (Sandbox Code Playgroud)
调用Action,浏览器会弹出用户名和密码窗口,但是当结果重定向回Action时,总会返回401.
一旦用户使用新凭据登录,如何将用户重定向回上一个操作?
有没有办法使服务器端的凭据无效,而不是只返回401?
asp.net-mvc http windows-authentication logout http-status-code-401
我目前正在开发一个具有登录(用户名和密码)的站点 - 密码保护由Web服务器内的操作系统在操作系统内称为Realm的文件夹级别完成.现在我们必须这样做,直到我们找到一个合适的PHP登录系统.
我正在使用3个文件(请参阅底部的代码段).
该过程是: - 单击index.php上的"登录"按钮 - 输入用户名和密码以访问身份验证索引文件. - 单击注销按钮,该按钮引用logout.php文件 - 它应该清除缓存并将用户返回到顶级索引.
它不会"破坏会话",因为在提示时不会要求您重新输入密码,这实际上就是我想要发生的事情.
我对PHP的最小知识让我有点难过.
index.php(带登录按钮的顶级文件)
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<a href="authenticate/index.php">Log In Btn</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
authenticate/index.php(此文件夹受密码保护 - 包含带有注销按钮的索引文件,该按钮链接到logout.php文件)
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Log out</title>
</head>
<body>
<a href="logout.php">Log Out Btn</a> …Run Code Online (Sandbox Code Playgroud) 我似乎遇到了与此问题相同的问题:Django注销问题
我有点怪,它适用于谷歌Chrome ....但不是在Firefox ...
这是我的注销功能:(在views.py中)
def my_logout(request):
logger.debug("Logout called by user")
try:
# Here I do some custom stuff, like logging this action in a database and so on
# For this question it shouldn't matter... because in a try catch
# so whatever goes wrong here, logging out should work anyway
except Exception, e:
logger.info("Logging logout action error: %s" % e)
logout(request)
return HttpResponseRedirect("/")
Run Code Online (Sandbox Code Playgroud)
在settings.py我有:
LOGIN_URL = '/desktop/login/'
LOGOUT_URL = '/desktop/logout/'
LOGIN_REDIRECT_URL = '/'
Run Code Online (Sandbox Code Playgroud)
在app iamapps的urls.py中(在项目网址中包含/ desktop /): …
我将在我的PhoneGap应用程序中实现注销按钮,该应用程序将用户返回到认证页面(带有已清除的字段).对于按钮我正在使用onclick事件的锚点:
<script type="text/javascript">
function doLogout() {
var backlen = history.length;
history.go(-backlen);
window.location.replace("index.html");
}
</script>
<a data-role="none" href="#" onclick="doLogout"></a>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,即它只是让我回到已经填充的文件的认证页面,似乎只是后退一步.我不确定history.clear(),因为谷歌搜索它没有给我任何东西:
<a data-role="none" href="index.html" onclick="javascript:history.clear();"></a>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我的问题在哪里?如果有其他解决方案来处理PhoneGap中的注销事件,我会遵循它.谢谢
我们刚刚讨论了使用OAuth 2时的登录和注销行为.假设我们有两个webapp A并B使用一个OAuth提供程序O(使用spring-security-oauth2堆栈构建).
当您想要登录时,A您将被重定向到O,输入您的凭据,在那里获得会话O,重定向回A使用访问令牌,并且还创建会话A.
现在,当您想要登录时,B您被重定向到O,直接用令牌发送回B,因为您仍然有一个有效的sesison O并且也创建了会话B(无需再次输入您的凭据).
这解决了我们的单点登录问题.
现在的一个要求是,当您退出时,A 或者 B您从两个/所有应用程序中注销(单点注销).
我们的想法是:
A或B想要注销用户,他们会将其重定向到注销页面OO,O则删除属于当前会话的所有访问令牌,并将用户重定向回A或BA或被B破坏A并B检查每个请求上OAuth访问令牌的有效性,如果令牌无效,则销毁其会话您认为这是OAuth 2的有效用例吗?您如何以不同方式实施单点注销?
我们在Web应用程序中使用Spring Security.大多数页面都是安全的,即用户必须登录才能访问这些页面.它通常工作正常.但是,我们在注销期间遇到了不需要的行为.
假设用户已登录并向服务器发送请求以加载某个(安全)页面.在此请求完成之前,同一用户发送注销请求(即使用servlet_path"/ j_spring_security_logout"的请求).注销请求通常非常快,并且可以比之前的请求更早地完成.当然,注销请求会清除安全上下文.因此,前一个请求在其生命中间丢失了安全上下文,这通常会导致异常.
实际上,用户无需"手动"启动第一个请求.这种情况可能发生在具有自动刷新的页面上,即用户在自动发送刷新后按下注销链接只需几分之一秒.
从一个角度来看,这可以被认为是一种有意义的行为.另一方面,我更愿意在请求的生命中期防止这种安全上下文丢失.
有没有办法配置Spring Security来避免这种情况?(类似于"当存在来自同一会话的其他并发请求时推迟清除安全上下文"或"在单个请求期间仅读取一次安全上下文并将其缓存以供进一步使用")
谢谢.
我的顶部导航栏中有一个"注销"链接.我想知道我怎么能这样做,以便在我登录时,当我点击它并将我返回主页时它会将我注销.
具体来说,我在Laravel中对哪些文件进行了哪些更改?另外,我需要在视图中编写哪些代码(目前只包含HTML)才能触发此代码?
logout ×10
php ×2
session ×2
asp.net ×1
asp.net-mvc ×1
concurrency ×1
cordova ×1
django ×1
facebook ×1
http ×1
ios4 ×1
iphone ×1
java ×1
javascript ×1
laravel ×1
login ×1
membership ×1
navbar ×1
oauth ×1
oauth-2.0 ×1