Stan_ZA Ответов: 1

В MVC проверки подлинности с помощью форм


Я новичок в авторизации и аутентификации MVC. Я создаю страницу входа в систему, которая, когда пользователи успешно войдут в систему, будет перенаправлена на страницу "о программе", а затем внутри страницы "о программе" есть другие ссылки, указывающие на страницы, которые также нуждаются в авторизации для того же пользователя.

Должен ли я указывать [Authorize] во всех методах ActionResult или нет?

Если да, то не будет ли пользователю предложено входить в систему каждый раз, когда он нажимает на ссылку для этой конкретной страницы?

Я, очевидно, хочу, чтобы пользователь вошел в систему один раз, но когда я украшаю другой метод ActionResult с помощью authorize, я перенаправляюсь на страницу входа, даже если файл cookie установлен.

Я использую FormsAuthentication.

Может кто-нибудь, пожалуйста, сказать мне, что я делаю не так?

Что я уже пробовал:

Public ActionResult Login ()
{
    /*
       If loggin succeeds redirect to about page
     */
}
[Authorize]
Public ActionResult About()
{
   
}
[Authorize]
Public ActionResult Other()
{

}

1 Ответов

Рейтинг:
9

David_Wimbley

Я собираюсь сделать первоначальное предположение, что вы используете MVC 4 или выше.

Чтобы ответить на ваши вопросы в первую очередь, вы должны использовать только [Authorize] атрибут на ваших действиях контроллера, если вы должны войти в систему для просмотра любых данных/страниц, которые обслуживает это действие. Таким образом, в вашем случае, если вы хотите, чтобы пользователь вошел в ваше приложение для просмотра страницы о программе, то да, для этого нужен атрибут Authorize вместе с каждой страницей, для просмотра которой требуется аутентификация пользователя.

Еще одно замечание, есть даже атрибут [AllowAnonymous] что вы можете украсить действия вашего контроллера, который явно говорит, что пользователи, которые не вошли в систему, имеют возможность просматривать данные / страницу целевого действия.

Таким образом, причина моего предположения заключается в том, что при создании совершенно нового проекта MVC в visual studio, Если вы сделаете правильный выбор проекта, вы должны в конечном итоге создать начальное приложение, которое обеспечивает регистрацию пользователя, вход в систему, Управление учетной записью и возможность анонимного просмотра некоторых страниц vrs требование входа в систему для просмотра других страниц.

Если вы пытаетесь сделать все это с нуля (я предполагаю, что да, так как, как я понимаю ваш вопрос, вы говорите, что каждый раз, когда они нажимают на ссылку с атрибутом Authorize на ней, они должны войти в систему, что означает, что файлы cookie auth не устанавливаются).

Поскольку вы учитесь, я настоятельно рекомендую вам использовать приложение boiler plate, которое автоматически генерируется как новый проект, и строить его поверх этого. Я думаю, что то, на что я ссылаюсь, можно увидеть здесь, только бегло просмотрев эту ссылку: MVC и Identity Framework 2.0[^]

Используя проект, созданный visual studio, вы обходите необходимость кодировать всю внутреннюю сантехнику, необходимую для правильной обработки аутентификации, которая включает в себя постоянные сеансы, чтобы не требовать входа в систему каждый раз, когда они нажимают на действие, украшенное символом [Authorize] атрибут.

Некоторые дополнительные ссылки, которые я бы посоветовал вам изучить для проверки подлинности MVC.

Обеспечение вашей безопасности ASP.NET приложение MVC 4 и новый атрибут AllowAnonymous – RickAndMSFT в Azure &MVC[^]

ASP.NET идентичность / The ASP.NET сайт[^]

ASP.NET MVC и Identity 2.0: понимание основ[^]


Stan_ZA

Большое вам спасибо за это, Дэв, очень ценю.