ASP.NET MVC 3 Razor - проверка подлинности Windows при каждом запросе - PullRequest
1 голос
/ 27 сентября 2011

Я долго боролся с этим вопросом.По сути, я создаю корпоративный интранет-сайт (первый в MVC 3) и не могу заставить работать какие-либо проверки авторизации.Даже основной тип проекта «Интранет» не работает.Интересно, что «Добро пожаловать домен \ имя пользователя» работает нормально, поэтому я знаю, что он получает частичную информацию AD.

Вот мой процесс для основной настройки, которая не удается:

Войдите в систему как доменпользователь на рабочей станции разработки для Windows 7

Использование полностью исправленного VS2010 -> Создать новый проект -> ASP.NET MVC 3 -> Приложение для внутренней сети

Проект правой кнопкой мыши -> Использовать IIS Express

Свойства проекта -> Отключить анонимный доступ, Включить аутентификацию Windows

Измените файл web.config, добавив:

<add key="autoFormsAuthentication" value="false" />

Убедитесь, что файл web.config содержит:

<authentication mode="Windows" />

<authorization>
  <deny users="?" />
</authorization>

Изменить HomeController по умолчанию, где проверяются Group1 и Group2, а рабочие группы в других приложениях:

HomeController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC3AuthTest001.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {

            Boolean isAdmin01 = User.IsInRole("Group1");
            Boolean isAdmin02 = User.IsInRole("Group2");

            ViewBag.Message = "Welcome to ASP.NET MVC!" + " Admin: " + isAdmin01 + " EACAdmin: " + isAdmin02;

            return View();
        }

     }
 }

Запустите код, и отобразится следующее:

Добро пожаловать в ASP.NET MVC!Group1: False Group2: False

Оба должны быть истинными, так как я являюсь членом обеих групп.

Кроме того, все

[Authorize(Roles = @"Group1")]

В основном сбой проверкиприложение, которое приводит к пустым экранам.

Обычно я допускаю проблему с сетью, но тот же код, работающий в приложении MVC 2, работает точно так же, как ожидалось с группами.

Развертывание приложения на нашем сервере разработки (производственная конфигурация, IIS 7 на сервере Win2008) также не работает должным образом.

Я в конце ...

Есть какой-то шаг, который я пропускаю?

1 Ответ

0 голосов
/ 27 сентября 2011

Сначала я хотел бы взглянуть на следующее: что возвращает Roles.GetRolesForUser()?Это должны быть Group1 и Group2, но, вероятно, это что-то другое.

Во-вторых, вы можете проверить, действительно ли вы видите WindowsIdentity в качестве аутентифицированной личности.Убедитесь, что Thread.CurrentPrincipal.Identity является WindowsIdentity, а не чем-то другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...