servicestack ServiceStack方法的自定义属性
我正在尝试为ServiceStack服务创建一个自定义属性,通过它我可以控制服务类中的每个方法 这是我正在实现的属性类
servicestack ServiceStack方法的自定义属性,
servicestack,
servicestack,我正在尝试为ServiceStack服务创建一个自定义属性,通过它我可以控制服务类中的每个方法 这是我正在实现的属性类 [AttributeUsage(AttributeTargets.Method|AttributeTargets.Class , Inherited = false, AllowMultiple = false)] public class MyRequestFilterAttribute:RequestFilterAttribute { public string
[AttributeUsage(AttributeTargets.Method|AttributeTargets.Class , Inherited = false, AllowMultiple = false)]
public class MyRequestFilterAttribute:RequestFilterAttribute
{
public string Provider { get; set; }
public MyRequestFilterAttribute(ApplyTo applyTo): base(applyTo)
{
this.Priority = (int) RequestFilterPriority.Authenticate;
}
public MyRequestFilterAttribute():this(ApplyTo.All)
{
}
public MyRequestFilterAttribute(ApplyTo applyTo, string provider): this(applyTo)
{
this.Provider = provider;
}
public MyRequestFilterAttribute(string provider): this(ApplyTo.All)
{
this.Provider = provider;
}
public override void Execute(IHttpRequest req, IHttpResponse res, object requestDto)
{}
}
这是服务班
[MyRequestFilter(ApplyTo.All)]
public class TodoService : RestServiceBase<Todo>
{
public TodoRepository Repository { get; set; }
public override object OnGet(Todo request)
{
if (request.Id == default(long))
return Repository.GetAll();
return Repository.GetById(request.Id);
}
public override object OnPost(Todo todo)
{
return Repository.Store(todo);
}
public override object OnPut(Todo todo)
{
return Repository.Store(todo);
}
[MyRequestFilter("Admin")]
public override object OnDelete(Todo request)
{
Repository.DeleteById(request.Id);
return null;
}
public object GetDetailsofALL()
{
return null;
}
}
是否可以从方法级别设置权限/筛选器属性?如果是,如何实现此功能?否无法将其添加到方法中。您可以将其添加到服务类或请求DTO中,并使用ApplyTo方法过滤器告诉servicestack它应该应用于哪些方法,例如:
[MyRequestFilter(ApplyTo.All)]
[MyRequestFilter(ApplyTo.Delete, "Admin")]
public class TodoService : RestServiceBase<Todo> { ... }
[MyRequestFilter(ApplyTo.All)]
[MyRequestFilter(ApplyTo.Delete,“Admin”)]
公共类TodoService:RestServiceBase{…}
您还可以参考和属性的实现,以获取支持此功能的示例 谢谢你,伙计。。我以前看过这些链接。。但我只是想知道是否有可能从方法层面上做一些事情。
[MyRequestFilter("Admin")]
public override object OnDelete(Todo request){}
[MyRequestFilter(ApplyTo.All)]
[MyRequestFilter(ApplyTo.Delete, "Admin")]
public class TodoService : RestServiceBase<Todo> { ... }