Неиспользование контроллера является плохой практикой (и это отрицает цель использования MVC Framework (Model View Controller)), особенно в связи с установлением проверок на возможность проверки и проверки подлинности / авторизации.
Наилучшей практикой будет чтобы ваш ActionResult по умолчанию (установленный в вашем файле RouteConfig) на вашем контроллере вызывал функцию, которую вы определили, чтобы получить список групп, в которые входит ваш конечный пользователь
Пример:
Передайте следующее в каждом контроллере ActionResult:
// what will be needed:
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
var userSignOn = System.Web.HttpContext.Current.Request.LogonUserIdentity.Name;
List<string> activedirectoryGroupList = new List<string>();
activedirectoryGroupList = GetGroupsFromSignOn(userSignOn);
Вызываемая функция:
internal static List<string> GetGroupsFromSignOn(string signOn)
{
string searchText = "(&(objectCategory=person)(objectClass=user)(sAMAccountName={0}))";
searchText = searchText.Replace("{0}", signOn);
Domain domain = Domain.GetCurrentDomain();
DirectoryEntry userEntry = domain.GetDirectoryEntry();
DirectorySearcher searcher = new DirectorySearcher(userEntry, searchText);
SearchResult result = searcher.FindOne();
DirectoryEntry currentUserEntry = result.GetDirectoryEntry();
List<string> activedirectoryGroupList = new List<string>();
if (currentUserEntry != null)
{
int propertyCount = currentUserEntry.Properties["memberOf"].Count;
string activedirectoryGroup;
for (int i = 0; i < propertyCount; i++)
{
activedirectoryGroup = Convert.ToString(currentUserEntry.Properties["memberOf"][i]);
int startIndex = activedirectoryGroup.IndexOf('=');
startIndex += 1;
int endIndex = activedirectoryGroup.IndexOf(',');
int stringLength = endIndex - startIndex;
activedirectoryGroup = activedirectoryGroup.Substring(startIndex, stringLength);
activedirectoryGroupList.Add(activedirectoryGroup);
}
return activedirectoryGroupList;
}
else
{
return null;
}
}
Оттуда у вас будет список AD Группы, в которые будет входить ваш пользователь, и вы можете либо сопоставить эти группы с именами вашей авторизованной группы, которые вы можете установить либо в файле веб-конфигурации, либо в базе данных SQL, к которой вы можете обратиться.
Что касается определения того, что будет отображаться, вам, вероятно, следует настроить главное представление с частичными представлениями, отображаемыми на этом страница в зависимости от статуса авторизации вашего пользователя для этой информации.
Редактировать:
Полезная тема о проблемах аутентификации с asp. net MVC