动态添加路由的认证

时间:2014-05-12 14:18:04

标签: authentication servicestack

使用IAppHost.Routes.Add,ServiceStack中有一个选项add routes dynamically。这非常方便,因为它允许可重用​​服务以插件的形式打包并附加到实际应用程序。

为了说明,这里是应用程序主机配置的摘录,它支持插件并附加路径:

class AppHost: AppHostHttpListenerBase {
    public override void Configure(Container container) {
        // other stuff
        Plugins.Add(new MyReusablePlugin());
        Routes.Add(typeof(string), "/stuff", "GET");
        Routes.Add(typeof(string), "/other-stuff", "POST");
    }
}

问题是,我无法找到一种方法来指定那些动态添加的路由需要身份验证。从ServiceStack 4.0.15开始,Routes.Add没有重载,允许指定那些路由需要身份验证。是否可能(可能在较新的版本中)?

理想情况下,此类机制应支持指定角色/权限,就像RequiredRoleAttribueRequiresAnyRoleAttribute一样。

还有一件事:我意识到全局请求过滤器,看起来它们有点过于全局,无法在这里成为有效的解决方案,但我可能错了。如果使用请求过滤器可以实现相同的结果(包括指定所需角色/权限的能力),我很乐意接受这样的apporach作为答案的例子。

1 个答案:

答案 0 :(得分:1)

您可以使用Type上提供的AddAttributes extension method

来执行此操作
typeof(YourType).AddAttributes(new RequiredRoleAttribute("Admin"));

除了Routes.Add方法之外,您还需要这样做。