1
我有一个ASP.NET MVC 4应用程序,允许用户使用Gmail等外部服务登录。使用oauth从外部登录服务(Gmail,脸书)注销
到目前为止,用户可以在应用程序内部登录和导航。但问题是在注销。我有一个注销该请求的按钮,在我的AccountController
中调用控制器操作LogOff()
。在该方法中,如果用户通过oauth进行身份验证,如何注销?
本地帐户,我用:
public ActionResult LogOff()
{
WebSecurity.Logout();
return RedirectToAction("Login", "Account");
}
但通过OAuth我没有看到类似的事情...... 我想我需要清除某种饼干的,但我不知道如何...
你在哪里以及如何添加这个,即时消息总共mvc noob(3小时)添加这个,因为我有完全相同的问题 – Slartibartfast
@Slartibartfast您可以在'
WebSecurity.Logout();
将注销用户,即使他们通过OAuth进行身份验证。如果你想确保令牌注销后不会保留你可以调用
Session.Remove("facebooktoken"); //Facebook example
的信息是从this网页。还有一些值得一读的细节。
来源
2013-06-05 20:18:50 James
谢谢,但删除会话值的解决方案没有工作...当我登出我的应用程序,并尝试登录与另一个帐户我不能,我直接用以前的帐户登录.. 。但是,如果我注销,例如,在Facebook页面中,我可以使用另一个帐户登录...并且Google服务在ExtraData中默认没有该令牌... – amp
好的,所以你想要能够从您的应用中清除第三方Cookie?如果您想添加登录方法,您可以在帐户管理页面中关联其他帐户。 – James
是的,我认为清理cookie应该可以解决问题......我该怎么做?你有一些基本的例子吗? – amp
听起来像您想要将用户从源验证站点注销?只有认证站点才能删除/修改其Cookie。
解决方案是将用户重定向到身份验证站点的注销页面,或者使用API脚本将用户注销(如果该站点存在)。您可以使用带有“目标”属性打开一个新窗口,如果你不希望主浏览器窗口重定向。
脸谱,例如,有一个API调用:
FB.logout(function(response) { // user is now logged out });
的MVC Facebook的客户端有一个方法
GetLogoutUrl
,也返回你可以在服务器端使用的URL。来源
2013-06-11 04:06:42