【发布时间】:2013-02-14 23:43:23
【问题描述】:
使用 Windows 2012 服务器和 VS2012,我使用 Intranet 模板创建了一个新的 MVC 4 项目以进行 Windows 身份验证。我将它发布到 Windows 2012 服务器。砰,一切正常,我可以仔细阅读该网站。所以我将以下内容添加到 HomeController:
[Authorize(Roles = @"DOMAIN\GROUP")]
public class HomeController : Controller
{
...
}
身份验证仍然有效,但我立即看到带有大红色的错误页面:“错误。处理您的请求时发生错误。”
我尝试了域本地组、全局组、组的完整路径都不起作用。那我试试
[Authorize(Users = @"DOMAIN\ME")]
public class HomeController : Controller
{
...
}
这行得通!但我想使用 Windows 组。我读过的所有内容都说它只使用 Roles = ...,但由于某种原因,我遗漏了一些东西。从基本模板我没有改变任何东西,只是添加了 [Authorize(Roles = "..."]。
我在 Google 上搜索了几个小时,最后大部分都在 stackoverflow 上。我错过了什么?它必须是一些简单的东西。
如果有帮助...该服务器是我自己的开发服务器,我在其他项目 WCF 和 ASP.NET Forms 网站中使用 Windows 身份验证和授权。
新进展:似乎对于角色,服务器正在尝试基于 SqlRoleProvider 访问角色成员身份
[SqlException (0x80131904): Login failed for user 'CS\CS446$'.]
...
System.Web.Security.SqlRoleProvider.GetRolesForUser(String username) +1466
System.Web.Security.RolePrincipal.IsInRole(String role) +12322757
System.Linq.Enumerable.Any(IEnumerable`1 source, Func`2 predicate) +149
System.Web.Mvc.AuthorizeAttribute.AuthorizeCore(HttpContextBase httpContext) +265
...
它确实使用 windows 对我进行身份验证,并且似乎也通过 windows 授权我。
【问题讨论】:
标签: asp.net-mvc-4