Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net MVC 5中注销用户?_Asp.net_Asp.net Mvc 5 - Fatal编程技术网

如何在asp.net MVC 5中注销用户?

如何在asp.net MVC 5中注销用户?,asp.net,asp.net-mvc-5,Asp.net,Asp.net Mvc 5,当会话对象在我的视图中不存在时,我正在尝试注销用户,代码如下: FormsAuthentication.SignOut(); 但这不起作用-用户已经通过身份验证 我已经看到默认的注销Controller操作使用此代码注销用户: AuthenticationManager.SignOut(); 但在我看来,我不能使用这个代码 那么,如何才能注销视图中的用户?或者当不可能时,我如何在控制器中执行此操作 感谢您的帮助:)您将在控制器中执行此操作,例如在一个单独的操作中,如LogOut()。注销后,

当会话对象在我的视图中不存在时,我正在尝试注销用户,代码如下:

FormsAuthentication.SignOut();
但这不起作用-用户已经通过身份验证

我已经看到默认的注销
Controller
操作使用此代码注销用户:

AuthenticationManager.SignOut();
但在我看来,我不能使用这个代码

那么,如何才能注销视图中的用户?或者当不可能时,我如何在控制器中执行此操作


感谢您的帮助:)

您将在控制器中执行此操作,例如在一个单独的操作中,如
LogOut()
。注销后,将用户重定向到首页(例如)

然后,您只需创建一个指向该操作的链接


视图不是一个包含任何内容的地方,而是一个纯粹的表示逻辑,如
if
语句或
for
循环。控制器应注意应用程序行为,如注销。

只需调用默认注销操作(或副本)。这可以是一个javasript调用,也可以是一个实际的
链接。当我在我的控制器中调用它“RedirectToAction(“LogOff”,“Account”);”时,我的用户已经做好了身份验证的准备。你一直在说…用户已经通过了身份验证。这是什么意思?当然,他们是,你想“未经验证”他们。此外,在用户发出新请求之前,您的代码不会“注意到”注销。也就是说,如果调用
AuthenticationManager.SignOut()
和下一行的
User.Identity.IsAuthenticated-它仍将显示为真。@Tommy好的。。这是一个很好的暗示。那么如何将IsAuthenticated设置为false?User.Identity.IsAuthenticated=false;-不要工作。。它是只读的,您必须重定向用户或以某种方式向服务器发出新请求。调用SignOut();,重定向到其他地方。这将发出一个新的请求(客户端将发送刚刚从上一个请求收到的更新cookie,即您已将其注销的请求),更新的身份验证状态将可用。我假设是这样的,但是当此函数“FormsAuthentication.SignOut()”时,我如何执行此操作无法使用此函数“AuthenticationManager.SignOut()”,我收到一个错误,AuthenticationManager不包含此函数的实现?