Windows 2012 サーバーと VS2012 を使用して、Windows 認証用のイントラネット テンプレートを使用して新しい MVC 4 プロジェクトを作成します。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 Webサイトで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 経由でも認証しているように見えます。