通过在模块的构造函数中调用RequiresAuthentication,可以为nancy模块启用身份验证:
public class CustomModule : NancyModule
{
public ConfigurationModule()
{
this.RequiresAuthentication();
// ... specify module
}
}是否可以在默认情况下启用身份验证并添加对禁用身份验证的支持?
我知道可以子类化NancyModule并使用子类来代替,但这不是我想要的方式。我想加载没有引用我的某个自定义程序集的模块。
发布于 2017-08-03 16:59:27
不幸的是,我在没有引用自定义程序集的情况下找不到解决方案。
最后,我想出了以下解决方案:
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;
}
}
} https://stackoverflow.com/questions/45417476
复制相似问题