Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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
C# MVC4应用程序的注销_C#_Asp.net Mvc 4_Authentication_Logout - Fatal编程技术网

C# MVC4应用程序的注销

C# MVC4应用程序的注销,c#,asp.net-mvc-4,authentication,logout,C#,Asp.net Mvc 4,Authentication,Logout,我正在继续其他人的开发,我不太了解MVC应用程序中身份验证的当前实践 有关身份验证的唯一设置是在应用程序的IIS配置中: .NET授权规则=允许,所有用户 身份验证: 匿名身份验证:已启用 ASP.NET模拟:已禁用 Windows身份验证:已启用 使用服务器上的此配置,,浏览器会要求我输入登录名/密码。我输入我的网络登录名。 然后我可以通过Request.RequestContext.HttpContext.user.Identity… 在本地计算机上使用相同的登录名/密码登录:应用程

我正在继续其他人的开发,我不太了解MVC应用程序中身份验证的当前实践

有关身份验证的唯一设置是在应用程序的IIS配置中:

  • .NET授权规则=允许,所有用户
身份验证:

  • 匿名身份验证:已启用
  • ASP.NET模拟:已禁用
  • Windows身份验证:已启用
使用服务器上的此配置,,浏览器会要求我输入登录名/密码。我输入我的网络登录名。 然后我可以通过
Request.RequestContext.HttpContext.user.Identity…

在本地计算机上使用相同的登录名/密码登录:应用程序中未登录任何用户(Request.RequestContext.HttpContext.user.Identity.Name==“”)。如果禁用匿名身份验证,浏览器只会无限次地重新请求登录密码

我的第一个问题是,我希望能够在服务器上注销。 从scarse信息中,我已经尝试过:
FormsAuthentication.SignOut()-->不执行任何操作
WebMatrix.WebData.WebSecurity.Logout()-->异常,尝试访问数据库(我从一个VS2012模板中获得了这个,但我认为它不会应用于我的上下文)。
if(this.Request.RequestContext.HttpContext.Session!=null)
this.Request.RequestContext.HttpContext.Session.Clear()-->Session为null,因此不执行任何操作

那么,我如何注销才能作为其他用户重新登录?


(我也希望能够识别本地计算机上的用户,但我认为应该在另一个主题中询问。)

删除了FormsAuth注销方法,因为问题是针对Windows身份验证。。。啊

更新:

要获取登录的用户名,请尝试IPrincipal控制器。用户:

User.Identity.Name
您使用Windows身份验证时遇到的问题

在这种情况下,缓存凭据的是浏览器,而不是服务器/IIS,因此清除会话不会产生任何效果

摘自:

用户凭据由客户端浏览器缓存,而不是由IIS缓存。要 强制客户端用户再次输入凭据,则需要发送 响应下一个客户端请求的相应401状态消息。 然而,这样做将与非常合理的用户期望背道而驰 Windows身份验证应该如何工作,因此您可能希望 重新考虑。当Windows用户凭据已被 服务器(通过登录对话框或IE下的自动提交) 目标站点或区域的配置),仅当 无法在以前提供的下访问请求的资源 凭据。当您在之前已发送任何凭据后发送401时 如果接受,用户应该期望他们需要使用不同的凭据 从他们的初始登录。如果您期望相同的凭据,则 用户可能会感到困惑

总而言之,如果你真的想强制一个新的登录,也许是另一个 身份验证模式可能更合适。”


有关仅适用于IE的解决方法,请参见。

谢谢您的回复,但如果您阅读我的帖子,您会发现我已经尝试了这两种方法(分别和一起)。@TTT确实如此,但您是否同时使用了这两种方法?-通常在带有表单认证的MVC中,您可以按照上面的方法注销。正如我在前面的评论中提到的,我分别尝试过,两种方法都尝试过)。