您好我正在为我正在使用asp.net mvc4的应用程序实现此提供程序“https://github.com/kylesonaty/AspNetRedisProviders”。然而,事情并不像我最初认为的那样乐观。由于提供者来自各自的抽象对应物,我想知道asp.net mvc中的默认授权过滤器是否仍会委托对这些提供者的调用
提前致谢
答案 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))); *
例如,最后一行,这将检查角色是否对当前用户有效,该角色由角色提供者设置。