特别说明:如果 Issue 报告为问题且开发成员回复确认问题之后但三天内都不能得到反馈,则视为无效Issue。
我实现了一个Abp风格的CrudAppService
这样我可以通过继承该类,通过如下代码,快速生成一系列RESTful风格的接口。
public class MedicalCategoryAppService :
CrudAppService<Guid,
MedicalCategory,
MedicalCategoryDto,
AddMedicalCategoryInput,
UpdateMedicalCategoryInput,
PagedResultRequestDto>,
IMedicalCategoryAppService,
IDynamicApiController,
ITransient
{
public MedicalCategoryAppService(IRepository<MedicalCategory> repository) : base(repository)
{
}
}
一切都很美好
然后我又面对了一个新的需求。
同样的实体,我需要生成两套权限不一样的Service
如
// for backend admin
[Authorize("Admin")]
public FirstAppService
// for mobile
[Authorize("MobileApi")]
public SecondAppService
在第二个服务中,我希望一些action被隐藏
即贴上[NonAction]
如果只是区分只读和增删改,我可以通过继承一个方法更少的ReadOnlyCrudAppService来实现。
但是如果我想灵活一点,只是隐藏一个删除方法。
例如写成如下代码
// 构造函数
public SecondAppService(IRespository<MyEntity> repository, CrudAppServiceOptions options):base(repository,options)
{
options.DeleteActionVisible = false;
}
我应该怎么做呢? 或者我应该去阅读哪方面的文档?
异常堆栈是什么?
什么代码导致?
期待的结果是?
= =,动态api文档本来就有啊。。。。
如果标志不是一个 Action
贴 [NonAction]
特性即可。
如果只是想隐藏,贴 [ApiDescriptionSettings(false)]
即可。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
感谢回复!对的!
我想到了一种方法,我可以override基类的方法贴[NonAction]
[NonAction]
public override Task<MedicalCategoryDto> DeleteAsync(Guid id)
{
return base.DeleteAsync(id);
}
不过这样感觉不酷!
如果只是控制权限这个很容易,通过 JwtHandler
就可以实现不同的分组或不同的api有不同的权限。现在的需求是不同权限运行时隐藏。还得是运行时动态处理,这个我好好想想。
好像您还是有些误会。
这个和用户是没有关系的。
因为是两个Service,他们的路由是不同的,虽然可能操作的是同样的实体,但是每个动作的实现细节是有差异的。
所以也有可能第二个service根本不提供删除方法。
因为我没有看您的源码,我只是在想DynamicApiController生成的时候是不是可以很方便的搞定这个事情。
才发了这个issue。
登录 后才可以发表评论