C# MVC4应用程序的注销
我正在继续其他人的开发,我不太了解MVC应用程序中身份验证的当前实践 有关身份验证的唯一设置是在应用程序的IIS配置中: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… 在本地计算机上使用相同的登录名/密码登录:应用程
- .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中,您可以按照上面的方法注销。正如我在前面的评论中提到的,我分别尝试过,两种方法都尝试过)。