2017-07-31 18 views
0

认证可以南希模块通过模块的构造函数调用RequiresAuthentication启用:如何开启验证南希模块,默认行为

public class CustomModule : NancyModule 
{ 
    public ConfigurationModule() 
    { 
     this.RequiresAuthentication(); 

     // ... specify module 
    } 
} 

是否有可能启用每个默认的身份验证,并添加了禁用它支持?

我知道可以继承NancyModule并使用子类代替,但这不是我想要的方式。我想加载不引用我的自定义程序集的模块。

回答

0

不幸的是,我没有找到一个没有引用自定义程序集的解决方案。

最后,我想出了以下解决方案:

public abstract class CustomNancyModule : NancyModule 
{ 
    protected CustomNancyModule(bool requiresAuthentication = true, string modulePath = null) 
     : base(modulePath ?? string.Empty) 
    { 
     if (requiresAuthentication) 
     { 
      this.RequiresAuthentication(); 
     } 
    } 
} 

,并确保所有的模块从CustomNancyModule得到对应的引导程序执行:

public class CustomBootstrapper : DefaultNancyBootstrapper 
{ 
    protected override IEnumerable<ModuleRegistration> Modules 
    { 
     get 
     { 
      var modules = base.Modules; 
      var customModuleType = typeof(CustomNancyModule); 

      foreach (var module in base.Modules) 
      { 
       if (!module.ModuleType.IsSubclassOf(customModuleType)) 
        throw new InvalidOperationException(
         $"Module '{module.ModuleType}' is not a sub class of '{customModuleType}'. It is not allowed to derive directly from NancyModule. Please use '{customModuleType}' as base class for your module."); 
      } 
      return modules; 
     } 
    } 
}