我有一個MVC5網站,我希望任何人都能夠從受限制的管理區域以外查看站點。我已經創建了一個過濾器來檢查我已經應用到管理控制器的用戶AD組,並且這個工作非常好。授權頁面上的MVC Windows身份驗證401
這些問題是爲人們查看主站點,如果它閒置一段時間,他們會在導航到頁面時收到未經授權的響應。一旦他們刷新它的罰款,並讓他們回到頁面。
的Web.Config在
<authentication mode="Windows" />
以下如果我刪除此則問題消失,但管理控制器不工作,因爲在我的自定義過濾器沒有發現Windows用戶。
的自定義過濾器只檢查一個AD組:
var groupList = GetGroupList();
if (base.AuthorizeCore(httpContext))
{
if (string.IsNullOrEmpty(groupList))
return true;
var groups = groupList.Split(',').ToList();
var context = new PrincipalContext(ContextType.Domain, "MYDOMAIN");
var userPrincipal = UserPrincipal.FindByIdentity(
context,
IdentityType.SamAccountName,
httpContext.User.Identity.Name);
if (userPrincipal == null)
return false;
try
{
foreach (var group in groups)
if (userPrincipal.IsMemberOf(context,
IdentityType.Name,
group))
return true;
}
catch
{
return false;
}
由於某些原因,即使控制器沒有[Authorize]屬性,我仍然得到重定向到訪問被拒絕的頁面,任何人都應該能夠查看頁面。 – tonyjoanes