繁体   English   中英

ServiceStack - 使用内置身份验证功能时访问请求DTO?

[英]ServiceStack - Access to the request DTO when using the built-in auth feature?

我正在使用ServiceStack实现一个Web服务,并且已经获得了授权。

我们的身份验证系统提供了用户拥有的“每个组织”权限列表,每个请求DTO都具有请求所属的强制“OrganizationId”属性。 只有当用户具有该特定组织的相应权限时,才能满足该请求。

ServiceStack中的授权回调(IsAuthorized,HasRole,HasPermission等)似乎不允许访问请求DTO,这意味着我无法拔出OrganizationId进行身份验证。 该服务是独立运行的,因此我无法通过HttpContext,HostContext等访问请求DTO。

我可以使用全局请求过滤器来实现我自己的auth层,但显然更愿意重新使用已经存在的内容,如果可能的话。 有没有什么方法可以可靠,安全地访问请求DTO,而无需重新发明ServiceStack已经提供的功能轮?

我看过的另一种方法是实现一个全局请求过滤器,以便将请求DTO添加到请求上下文的“Items”属性,然后我可以从auth回调例程访问它。 这不是最优雅的方法,感觉有点脏,但如果它完成了工作,我会咬紧牙关并实施它。 我希望有更好的方法。

您可以从IRequest.Dto属性获取当前的Request DTO,但这不会在UserSession HasRole()/HasPermission() API中注入。

用户会话应设置该用户所需的必要信息,因此理想情况下,组织ID将添加为自定义UserSession属性。 但是,如果您需要检查每个Request DTO,那么您需要在全局请求筛选器筛选器属性中添加自己的自定义逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM