Orchardcms 通过IP限制对Orchard CMS管理端的访问

Orchardcms 通过IP限制对Orchard CMS管理端的访问,orchardcms,iis-8.5,Orchardcms,Iis 8.5,我试图拒绝对/Admin的所有IP访问,但有几个例外。Orchard CMS 1.8.1应用程序正在IIS 8.5上运行。 我正在试验IP限制规则,但在我看来,这不是正确的工具,因为我只能设置文件夹而不是单个页面的访问权限。 (已设法拒绝访问管理员主题。) 我尝试了以下片段,但没有成功: <location path="Admin"> <system.webServer> <security> <ipSecurity

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

我尝试了以下片段,但没有成功:

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

还尝试为根目录的Users/Account/LogOn创建一个虚拟目录,并设置其访问权限,但也没有成功

我想为/Admin设置URL重写,但不确定如何启动或应该遵循什么逻辑


有什么建议吗?

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

[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();
        }
    }
}