我在我的MVC解決方案中實現了以下action屬性。401錯誤:Active directory&Asp.Net MVC
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeADAttribute : AuthorizeAttribute
{
public string[] Groups { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
/* Return true immediately if the authorization is not
locked down to any particular AD group */
if (Groups == null)
return true;
foreach (var group in Groups)
if (httpContext.User.IsInRole(group))
return true;
}
return false;
}
}
並調用它像這樣:
public const string Admin = "MY_DOMAIN\\Admins";
public const string Users = "MY_DOMAIN\\Users";
public const string AddUser = "MY_DOMAIN\\AddUser";
[AuthorizeAD(Groups = new string[] { Admin, Users })]
public ActionResult GridData(...)
{ ... }
[AuthorizeAD(Groups = new string[] { Admin, Users, AddUser })]
public ActionResult Add(...)
{ ... }
這似乎就像是工作的罰款,到目前爲止(在本地沒有問題),直到有人注意到(在另一個問題我貼),我」在部署的實例上一直收到401個錯誤。
我覺得我AuthorizeADAttribute需要返工,除非任何人有什麼樣的問題可能是在主機環境的想法。這個想法是,用戶必須位於活動目錄的admin或用戶組才能訪問該站點,並且如果他/她被分配給用戶角色,則他們也需要屬於另一個組,例如:添加,刪除,更新等..
到目前爲止,我幾乎難倒了:/
真的?我每天都受到一點教育。我的問題是發送給客戶端的實際的401頁面,是否有一種方法可以將其刪除/將其替換爲較小的頁面......對於默認授權...讓我試試快速。 –
達林是正確的。您應該閱讀我的文章如何使用ASP.NET MVC創建Intranet站點http://msdn.microsoft.com/zh-cn/library/gg703322(VS.98).aspx – RickAndMSFT