Я прочитал статью о безопасности asp.net mvc. и он отметил, что более безопасный подход к созданию пользовательской авторизации заключается в создании подкласса AuthorizeAttribute, поскольку переопределить метод AuthorizeCore, гарантирует, что я получаю пользу от встроенных функций AuthorizeAttribute, и мне не нужно беспокоиться о детализации безопасности имплантировать или создавать все с нуля. следующим образом: -Можно ли создать собственный атрибут аутентификации путем создания подкласса AuthorizeAttribute
public class CustomAuthAttribute : AuthorizeAttribute {
private bool localAllowed;
public CustomAuthAttribute(bool allowedParam) {
localAllowed = allowedParam;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Request.IsLocal) {
return localAllowed;
}
else {
return true;
Пусть говорят, что я добавил атрибут CustomAuth вместо DEFUALT [Authorize] атрибут к моим методам действий. так может кто-нибудь совет на следующее: -
припишут мой пользовательский авторизированным перенаправить пользователя на страницу входа в систему, если запрос не прошел проверку подлинности, в соответствии с настройкой web.config. или я потеряю эту функцию.
является необходимым проверить, если запрос проходит проверку подлинности внутри атрибута пользовательского Авторизоваться следующим образом: -
если (! HttpContext.Request.IsAuthenticated) вернуться ложным;
или это обрабатывается defualt?
- Могу ли я по-прежнему использовать Пользователь, Роль и передавать их с использованием настраиваемого атрибута авторизации.
Может ли кто-нибудь посоветовать это, пожалуйста? Thanks
ok Спасибо за ваш ответ. поэтому у меня есть три основные проблемы. Первый, так как я не называю base.authorizecore, какие функции я пропущу? Вторая проблема, так как я явно проверяю httpContext.Request.IsAuthenticated, так что мой код представляет собой дыру в безопасности? третья проблема, если я вызываю base.AuthotizeCore (httpContext), тогда мне не нужно явно вызывать httpContext.Request.IsAuthenticated? –
1: посмотрите исходный код MVC: http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/AuthorizeAttribute.cs 2: я не знаю, кто устанавливает 'IsAuthenticated', поэтому не уверен, можно ли назвать это свойство безопасным. 3: это правильно. – Marthijn