C#学习教程:MVC等价于Webforms“UrlAuthorizationModule.CheckUrlAccessForPrincipal”:ControllerpublicActionResultIndex(){...如您所见,只有具有管理员角色的用户才能访问MyController的Action方法。那么,从其他地方(另一个控制器,我的库类中的另一个类等),我如何检查MyController是否可以访问Current.User.Identity.Name?类似于WebForms的“UrlAuthorizationModule.CheckUrlAccessForPrincipal”。您必须从其他控制器读取信息。这可以通过实例化其上下文和描述符,然后实例化该控制器的AuthorizationContext并读取过滤器信息来完成。这就是你如何做的。以上就是C#学习教程:MVC相当于Webforms“UrlAuthorizationModule.CheckUrlAccessForPrincipal”共享的所有内容。ActionIsAccessibleToUser(stringactionName,ControllerBasecontrollerBase){//获取控制器上下文。varcontrollerContext=newControllerContext(this.ControllerContext.RequestContext,controllerBase);//获取控制器描述符。varcontrollerDescriptor=newReflectedControllerDescriptor(controllerBase.GetType())/获取操作描述符。varactionDescriptor=controllerDescriptor。FindAction(controllerContext,actionName);//检查授权。返回ActionIsAuthorized(actionDescriptor,controllerContext);}privateboolActionIsAuthorized(==ActionDescriptoractionDescriptornulltext)controllerscript(=={//Actiondoesnotexist.returnfalse;}//获取控制器的授权上下文。AuthorizationContextauthContext=newAuthorizationCon文本(controllerContext,actionDescriptor);//运行每个auth过滤器直到失败//一些缓存可以提高性能varfilters=FilterProviders.Providers.GetFilters(controllerContext,actionDescriptor);FilterInfofilterInfo=newFilterInfo(过滤器);foreach(}}//假设用户已授权。returntrue;}本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载,请注明出处:
