如何在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不包含此函数的实现?