Я сослался на сотни сообщений и пока не повезло. Base.AuthorizeCore (httpContext) всегда возвращает false.base.AuthorizeCore (httpContext) всегда ложно
Я запускаю приложение MVC из VS2012 с помощью IIS express. Многие люди смогли решить эту проблему с помощью проверки подлинности на основе форм. Но я тоже это пробовал. Пожалуйста, помогите ..
Ниже приведен авторизованный автоответчик.
public class AuthorizeADAttribute : AuthorizeAttribute
{
public string Groups { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
// var authorized = (httpContext.User.Identity.IsAuthenticated);
/* Return true immediately if the authorization is not
locked down to any particular AD group */
if (String.IsNullOrEmpty(Groups))
return true;
// Get the AD groups
var groups = Groups.Split(',').ToList<string>();
// Verify that the user is in the given AD group (if any)
var context = new PrincipalContext(ContextType.Domain, "MYDOMAIN");
var userPrincipal = UserPrincipal.FindByIdentity(context,
IdentityType.SamAccountName,
httpContext.User.Identity.Name);
foreach (var group in groups)
{
try
{
if (userPrincipal.IsMemberOf(context, IdentityType.Name, group))
return true;
}
catch (NoMatchingPrincipalException exc)
{
var msg = String.Format("While authenticating a user, the operation failed due to the group {0} could not be found in Active Directory.", group);
System.ApplicationException e = new System.ApplicationException(msg, exc);
// ErrorSignal.FromCurrentContext().Raise(e);
return false;
}
catch (Exception exc)
{
var msg = "While authenticating a user, the operation failed.";
System.ApplicationException e = new System.ApplicationException(msg, exc);
//ErrorSignal.FromCurrentContext().Raise(e);
return false;
}
}
}
return false;
}
}
Передаю название группы, как это. Это отлично работает, когда я запускаю приложение из VS2012 с помощью IIS Express. Файл web.config установлен в . В настройках IIS с помощью проверки подлинности на основе форм установлено значение. Но перенаправление URL идет на login.aspx. У меня нет страницы входа в мою заявку
Но когда я публикую веб-сайт в IIS. Появится страница с ошибкой.
[AuthorizeAD(Groups = "DevUsers")]
public ActionResult Index()
{
return View();
}
Нам нужен какой-то контекст, который сможет вам помочь. Пожалуйста, прочтите это sscce.org – reggaeguitar
Какая страница ошибки? Какая ошибка? –
Ваш вопрос действительно запутан и не имеет большого смысла. Как вы можете использовать проверку подлинности с помощью форм, но не имеете учетной записи? Как вы ожидаете, что ваш пользователь войдет в систему? Кажется, вы используете код Active Directory в атрибуте Authorize, что мало смысла, если вы используете проверку подлинности с помощью форм. –