asp.net – MVC5认证中的“和主域之间的信任关系失败”
我有一个ASP.NET MVC5应用程序,其中我不使用Windows身份验证。
一切都运行正常,直到我尝试运行应用程序在它正在开发的域之外(无论什么原因)得到: The trust relationship between this workstation and the primary domain failed. 当我试图做User.IsInRole(“管理”)。 我正在使用.NET的 有关这个问题的很多问题,但他们来自想要使用Windows认证的人。并在他们的MVC应用程序中冒充: > With windows authentication,The trust relationship between the primary domain and the trusted domain failed,when calling IsInRole 那么为什么我得到这个SystemException如果我没有使用Active Directory和(据我所知)没有做任何可能依赖于PC的域名?我错过了一些配置(在我的Web.config或IIS Express中)? 编辑: 好的,把它缩小一点… 我的User.IsInRole(“Admin”)行位于我的_Layout.cshtml视图中的if()语句里面(即根据角色知道在nav。bar中显示的内容)。 我现在知道,当没有用户进行身份验证时,我只收到上面的错误,而且我不在我用于开发者的域中。如果我在该行放置一个断点,我可以看到User对象是一个System.Security.Principal.WindowsIdentity,其底层的Identity是System.Security.Principal.WindowsIdentity。 另一方面,如果用户被认证,那么User对象和ts Identity就是System.Security.Claims.ClaimsPrincipal和System.Security.Claims.ClaimsIdentity。 为什么会使用Windows身份(当未经身份验证),如何禁用它? 解决方法
所以,根据我的编辑,我修改了我的_Layout.cshtml,而不是拥有
@if(User.IsInRole("Admin")) {...} 我有 @if(User.Identity.IsAuthenticated && User.IsInRole("Admin")) {...} 这似乎解决了这个问题。 我相信问题是,当没有用户被认证时,ASP.NET身份使用了empty 但是,即使上面的更改似乎修复了我的代码,我将非常有兴趣了解更多关于此行为:为什么当没有用户被认证时,它使用一个空的System.Security.Principal.WindowsIdentity。我会接受任何解释的答案。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |