2013-12-14 5 views
0

Привет, я использую этот провайдер «https://github.com/kylesonaty/AspNetRedisProviders» для приложения, в котором я сейчас работаю в asp.net mvc4. Однако все не так радужно, как я изначально думал, что они будут. Поскольку поставщики являются производными от соответствующих абстрактных аналогов, я хотел бы знать, если по умолчанию авторизовать фильтры в ASP.NET MVC еще делегирует вызовы этих провайдеровAction Filters + AspNetRedisProvider

Спасибо заранее

ответ

0

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

protected virtual bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    if (httpContext == null) 
    throw new ArgumentNullException("httpContext"); 
    IPrincipal user = httpContext.User; 
    return user.Identity.IsAuthenticated 
    && (this._usersSplit.Length <= 0 || 
    Enumerable.Contains<string>((IEnumerable<string>) this._usersSplit, user.Identity.Name, (IEqualityComparer<string>) StringComparer.OrdinalIgnoreCase)) 
    && (this._rolesSplit.Length <= 0 || Enumerable.Any<string>((IEnumerable<string>) 
    this._rolesSplit, new Func<string, bool>(user.IsInRole))); 
    } 

* this._rolesSplit, новый Func (user.IsInRole))) *;

Например, в последней строке, это будет проверить роль действительна для текущего пользователя, который установлен поставщиком роли.