Вход только для одного участника в MVC3

Я создаю свой собственный движок блога в MVC3 и не хочу регистрировать пользователей для публикации комментариев и прочего. Я просто хочу иметь страницу входа для администратора (меня), поэтому я не хочу реализовывать членство. Я просто хочу, чтобы страница входа и атрибут [Authorize] были включены, а затем ссылка для выхода. Как лучше всего это сделать? Спасибо


person Libor Zapletal    schedule 02.08.2011    source источник


Ответы (2)


Атрибут [Authorize] использует объект HttpContext.Current.User IPrinicipal для проверки того, аутентифицирован ли пользователь. Если вы не хотите реализовывать MembershipProvider, вам придется реализовать некоторый тип вашего собственного объекта IPrinicipal. Другим решением может быть использование FormsAuthentication с настройкой web.config, которая выглядит примерно так:

 <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880">
        <credentials passwordFormat="SHA1">
            <user name="admin" password="43206512b209ba29cb5c642edc85bdac133354fe"/> <!-- SecretPass -->
        <credentials>
    </forms>
</authentication>

Надеюсь, это поможет. С уважением.

РЕДАКТИРОВАТЬ: я использовал онлайн-генератор хэшей SHA1 http://hash.online-convert.com/sha1-generator

person Husein Roncevic    schedule 02.08.2011
comment
Благодаря вам нашел несколько статей про IPrincipal, внедряю и все работает, большое спасибо. - person Libor Zapletal; 02.08.2011
comment
Разве это не дает хакеру ваш пароль и не сообщает им, как он закодирован? Я не эксперт в области безопасности, поэтому, пожалуйста, простите меня, если я ошибаюсь, но наверняка хакеры смогут легко получить доступ к этой информации? - person simonlchilds; 02.08.2011
comment
Ну на самом деле вы правы. Но web.config никогда не обслуживается по запросу. Это было просто предложение Бибо. Однако если Bibo реализует объект типа IPrincipal, в web.config это не потребуется. Кроме того, алгоритм SHA1 довольно сложно взломать, но все же возможно с помощью грубой силы. Хорошая мысль, Чшарпси. - person Husein Roncevic; 02.08.2011

Используя какой-либо жестко закодированный пароль/имя пользователя или логин для конкретной машины (модуль администратора доступен только для определенного IP-адреса), это легко.

person nidhin    schedule 02.08.2011
comment
Можете ли вы дать мне ссылку на статью об этом решении? :) - person Libor Zapletal; 02.08.2011