【问题标题】:Restrict access to the Admin side of Orchard CMS by IP通过 IP 限制对 Orchard CMS 管理端的访问
【发布时间】:2015-05-21 12:58:07
【问题描述】:

我试图拒绝对 /Admin 的所有 IP 的访问,但有几个例外。 Orchard CMS 1.8.1 应用在 IIS 8.5 上运行。 我正在尝试使用 IP 限制规则,但在我看来这不是正确的工具,因为我只能在文件夹而不是单个页面上设置访问权限。 (设法拒绝访问 TheAdmin 主题。)

我试过下面的 sn-p 没有运气:

<location path="Admin">
   <system.webServer>
      <security>
         <ipSecurity allowUnlisted="false">
         </ipSecurity>
      </security>
   </system.webServer>
</location>

http://www.iis.net/configreference/system.webserver/security/ipsecurity

还尝试为根目录创建用户/帐户/登录的虚拟目录并设置其访问权限,但这也不起作用。

我正在考虑为 /Admin 设置 URL 重写,但不确定如何开始或应该遵循什么逻辑。

有什么建议吗?

【问题讨论】:

    标签: orchardcms iis-8.5


    【解决方案1】:

    如果我正确理解你的动机,我认为最好编写一个过滤器模块,它可以让你完全控制在什么条件下会发生什么。

    [OrchardFeature("FeatureDefinedInModuleTxtManifest")]
    public class AdminAccessFilter : FilterProvider, IAuthorizationFilter
    {
        private readonly IAuthorizer _authorizer;
    
        public AdminAccessFilter(IAuthorizer authorizer)
        {
            _authorizer = authorizer;
            Logger = NullLogger.Instance;
        }
    
        public ILogger Logger { get; set; }
    
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (!AdminFilter.IsApplied(filterContext.RequestContext) || !_authorizer.Authorize(StandardPermissions.AccessAdminPanel))
            {
                // Not an admin area or no permission already, do nothing
                return;
            }
    
            var request = filterContext.HttpContext.Request;
    
            var userIp =
                request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? // Proxy
                request.UserHostAddress;
    
            if (userIp != "100.100.100.100") // Your logic for denying access
            {
                Logger.Fatal("Unauthorized admin access detected from {0}", userIp);
    
                filterContext.Result = new HttpUnauthorizedResult();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 1970-01-01
      • 2011-05-13
      • 2017-05-08
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多