动作过滤器+ AspNetRedisProvider

时间:2013-12-14 05:10:59

标签: c# asp.net asp.net-mvc-4 redis

您好我正在为我正在使用asp.net mvc4的应用程序实现此提供程序“https://github.com/kylesonaty/AspNetRedisProviders”。然而,事情并不像我最初认为的那样乐观。由于提供者来自各自的抽象对应物,我想知道asp.net mvc中的默认授权过滤器是否仍会委托对这些提供者的调用

提前致谢

1 个答案:

答案 0 :(得分: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,new Func(user.IsInRole))); *

例如,最后一行,这将检查角色是否对当前用户有效,该角色由角色提供者设置。