3
静态我将像这样进入我的服务:如何以编程方式分配角色和权限,以服务和/或RequestDTOs
[Authenticate]
public class AppUserService : Service
{
[RequiredRole("Administrator")]
public object Post(CreateAppUser request)
{
//.....
}
}
我怎样才能做到这一点编程?
我会让用户使用GUI创建角色。然后我会列出一些可用的方法,例如通过提供使用类似改进代码的方法:
var appHost = HostContext.AppHost;
var restPaths = appHost.RestPaths;
foreach (var restPath in restPaths)
{
var reqType = restPath.RequestType;
string verbs = string.Empty;
if (restPath.Verbs != null)
{
var counter = 0;
foreach (var verb in restPath.Verbs)
{
if (counter > 0) verbs += ", ";
verbs += verb;
counter++;
}
}
Debug.WriteLine($"Path: {restPath.Path} | Verbs: {verbs} | Name: {reqType.Name} FullName: {reqType.FullName}");
}
上面的代码输出类似
Path: /appusers | Verbs: POST | Name: CreateAppUser FullName: MyServer.ServiceModel.DTOs.Request.CreateAppUser
所以,我可以在我的UI显示RequestType
的Name
财产,让他定义是什么,角色允许调用这个方法。因此,用户可以创建一个名为“用户管理”的角色,并允许该角色的成员执行CreateAppUser
。
使用注释我会写
[RequiredRole("Administrator", "User Management")]
public object Post(CreateAppUser request)
{ .... }
这是无论如何可能在C#代码?
谢谢德米斯,我认为自定义的RequestFilter是最好的方法。我会稍后再试。 – ThommyB