我正在使用MVC4.5构建一个小型应用程序。我有一个Azure数据库,我正在使用代码优先和EntityFramework来设置它。该应用托管在我的开发共享点区域。HomeController的Index()操作具有[SharePointContextFilter]并加载登录用户的用户名等。当应用程序被调试并且第一个操作运行时,Sharepoint{StandardTokens}被附加到url,所以SPHostUrl和AppWebUrl和一些其他变量被添加到查询字符串中。如果我在没有[SharePointContextFilter]的情况下导航到一个操作,它工作正常,直到我导航回到操作用
假设我有一个这样的Controller方法:[Audit]publicJsonNetResultList(intstart,intlimit,stringsort,stringdir,stringsearchValue,SecurityInputModelsecurityData){...}和这样定义的属性:[AttributeUsage(AttributeTargets.Method)]publicclassAuditAttribute:ActionFilterAttribute{publicoverridevoidOnActionExecuted(ActionExecutedCon
我想向应用程序添加一项功能,以便只有管理员可以创建用户,并且他可以向用户提供对特定页面的访问权限。他可以创建角色,可以为用户提供不同的角色。我正在使用VisualStudio2010并在MVC3中构建此应用程序。请给我一些改造的建议。提前致谢。 最佳答案 1.用Authorize属性装饰你的用户创建和权限设置Action(请注意,使用AuthorizeAttribute的Roles属性需要实现MembershipProvider(标准或自定义)并将其注册到web.config中)publicclassAccountControlle
我制作了一个新的Action过滤器(属性,类似于[Authorize]),它根据session值授权访问ControllerAction。但是,我基本上是用该属性装饰我的所有Controller操作(除了极少数)。因此,我认为在我将[ExemptFromAuthorize]属性附加到Controller操作的情况下,让操作过滤器始终执行除外会更好吗?(也许通过继承到我自己的Controller类?)我该怎么做? 最佳答案 运行jeef3的答案,我想到了这个。它可以使用更多的错误检查和稳健性,例如多个定界操作,但总体思路可行。在您的特
我对单元测试非常非常陌生,正在尝试为一种非常简单的方法编写测试:publicclassmyClass:RequireHttpsAttribute{publicoverridevoidOnAuthorization(AuthoizationContextfilterContext){varrequest=filterContext.HttpContext.Request;varheader=Convert.ToBoolean(request.Headers["Special-Header-Name"]);if(!(header||request.IsSecureConnection)){
我正在构建一个ASP.NETMVC站点,我想在其中限制经过身份验证的用户使用站点某些功能的频率。虽然我了解速率限制的基本工作原理,但我无法想象如何在不产生主要代码味道的情况下以编程方式实现它。您能否用C#示例代码向我指出一个简单而强大的解决方案来解决此类问题?如果重要的话,所有这些功能目前都表示为仅接受HTTPPOST的操作。我最终可能还想为HTTPGET函数实现速率限制,因此我正在寻找适用于所有此类情况的解决方案。 最佳答案 如果您使用的是IIS7,您可以查看DynamicIPRestrictionsExtension.另一种可能
我使用类名RightCheckerAttribute来检查MVC3应用程序中的用户权限...所以RightCheckerAttribute类是这样的……publicboolisAdmin{get;set;}publicoverridevoidOnActionExecuting(ActionExecutingContextfilterContext){HttpContextBasecontext=filterContext.HttpContext;boolresult=Convert.ToBoolean(context.Request.QueryString["isAdmin"].ToS
我正在尝试实现根据主机缓存某些页面的功能。这是因为我可以拥有一个页面的多个版本,这些版本具有相同的参数,并且请求方面的唯一区别是所请求的主机。例如,这两个URL将请求相同的页面,但它们的样式不同:http://www.a.com/something/specific和http://www.b.com/something/specific我正在查看此处概述的示例:http://msdn.microsoft.com/en-us/library/5ecf4420%28v=VS.90%29.aspx但这对我来说没有意义。我已将其添加到我的global.asax中:publicoverrides
我正在使用MVC,在我的OnActionExecuting()中,我需要确定即将执行的Action方法是否装饰有属性AuthorizeAttribute特别是。我不是在询问授权是否成功/失败,而是在询问该方法是否需要授权。对于非mvc人员filterContext.ActionDescriptor.ActionName是我正在寻找的方法名称。但是,它不是当前正在执行的方法;相反,它是一个将很快执行的方法。目前我有一个如下所示的代码块,但我对每个Action之前的循环不太满意。有更好的方法吗?System.Reflection.MethodInfo[]actionMethodInfo=t
当我创建一个新的asp.netmvc4.0应用程序时,我做的第一件事就是创建并设置自定义授权全局过滤器,如下所示://FilterConfig.cspublicstaticvoidRegisterGlobalFilters(GlobalFilterCollectionfilters){//filters.Add(newHandleErrorAttribute());filters.Add(newCustomAuthorizationAttribute());}然后我像这样创建CustomAuthorizationAttribute://CustomAuthorizationAttrib