我有一个ASP.NETMVC5应用程序,其中我not使用Windows身份验证.
一切正常,直到我try 在开发应用程序的域之外运行该应用程序,并且(出于任何原因)得到了一个:
The trust relationship between this workstation and the primary domain failed.
当我试着开到User.IsInRole("Admin")
英里的时候.
我正在使用.NET Identity
中的自定义Identity
、Role
、IdentityStore
、RoleStore
等,我可以看到从(MongoDB)数据库中正确地检索到了用户和角色数据.
关于这个问题有很多问题,但这些问题都来自于want to名使用Windows Auth的用户.以及MVC应用程序中的模拟:
那么,如果我没有使用Active Directory,而且(据我所知)没有做任何可能依赖于PC域的事情,为什么我会得到SystemException
分呢?我是否缺少一些配置(在我的Web.config
或IIS Express中)?
编辑:
好吧,把范围缩小一点...
我的User.IsInRole("Admin")
行在我的_Layout.cshtml
视图的if()
语句中(也就是说,为了知道在导航中显示什么.栏,具体取决于角色).
我现在知道,只有当没有用户经过身份验证,并且我不在我用于开发的域中时,我才会出现上面的错误.如果我在这行上放置一个断点,我可以看到User
对象是System.Security.Principal.WindowsIdentity
,它的底层Identity
是System.Security.Principal.WindowsIdentity
.
另一方面,如果用户被认证,则User
对象和TSIdentity
是System.Security.Claims.ClaimsPrincipal
和System.Security.Claims.ClaimsIdentity
.
它为什么要使用Windows标识(未经身份验证时),如何禁用它?