使用Nancy Routing中的共享参数保护多个路由

时间:2017-02-13 22:54:22

标签: nancy

我有一个带有多个路由的nancy模块,并希望对每个路由共享的参数进行安全检查。我可以以某种方式将这个参数移动到层次结构中吗?检查是一行吗?

下面提供的示例

public SomeModule()
    {
        //ABC
        Get["/prefix/{someSharedParameter}/ABC/{noneSharedParameterA}"] = parameters =>
        {
            this.RequiresSomethingArbitrary(parameters.someSharedParameter);
            ...
        };

        //XYZ
        Get["/prefix/{someSharedParameter}/XYZ/{noneSharedParameterX}"] = parameters =>
        {
            this.RequiresSomethingArbitrary(parameters.someSharedParameter);
            ...
        };

    }

所以我希望能够在这里将检查RequiresSomethingArbitrary放在模块级别,但不确定如何甚至是可能的。

编辑:在找到模块基本路径之后我有了一个想法,但它很短 这不起作用。上下文为空。

public SomeModule(): base("/prefix/{someSharedParameter}")
    {
        this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter);
        //ABC
        Get["/ABC/{noneSharedParameterA}"] = parameters =>
        {

            ...
        };

        //XYZ
        Get["/XYZ/{noneSharedParameterX}"] = parameters =>
        {
            ...
        };

    }

我也尝试过只检查上下文是否为null因为我认为它可能在初始化模块时失败但是这总是会跳过检查:

public SomeModule(): base("/prefix/{someSharedParameter}")
    {
        if (Context != null) {
            //this is unreachable (?)
            this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter);
        }
        //ABC
        Get["/ABC/{noneSharedParameterA}"] = parameters =>
        {

1 个答案:

答案 0 :(得分:0)

<data>
    <variable
        name="login"
        type="Common.Login"/>
</data>

您需要做的就是将支票移至构造函数。