使用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
没有重载,允许指定那些路由需要身份验证。是否可能(可能在较新的版本中)?
理想情况下,此类机制应支持指定角色/权限,就像RequiredRoleAttribue
或RequiresAnyRoleAttribute
一样。
还有一件事:我意识到全局请求过滤器,看起来它们有点过于全局,无法在这里成为有效的解决方案,但我可能错了。如果使用请求过滤器可以实现相同的结果(包括指定所需角色/权限的能力),我很乐意接受这样的apporach作为答案的例子。
答案 0 :(得分:1)
您可以使用Type
上提供的AddAttributes
extension method
typeof(YourType).AddAttributes(new RequiredRoleAttribute("Admin"));
除了Routes.Add
方法之外,您还需要这样做。