根据身份验证/授权,仅向用户公开某些方法

时间:2014-02-27 13:52:26

标签: c# wcf wcf-security

刚刚学习WCf Security,并在认证/授权的基础上搜索了如何仅向我的客户公开一些方法。
1)与管理应用程序一样,服务应公开所有方法。但对于User应用程序,同一服务应该公开一些方法 或者,2)如果管理员登录了应用程序服务,则应公开所有方法,并且如果usertype用户(不是admin)登录到同一应用程序,则公开有限的方法。

我已阅读http://msdn.microsoft.com/en-us/library/ff405740.aspx,但这是基于Windows的身份验证/授权。

1 个答案:

答案 0 :(得分:0)

在定义服务合同时不能这样做,但是你能做的是将方法拆分为新服务:UserService和AdminService,如下所示:

[ServiceContract]
public interface IUserService
{
    [OperationContract]
    void DoUserStuff();
}

[ServiceContract]
public interface IAdminService : IUserService
{
    [OperationContract]
    void DoAdminStuff();
}

例如,当用户通过身份验证时,根据他的角色,您可以向他发送特定服务的URL

[ServiceContract]
public interface IService
{
    [OperationContract]
    string Login(string username, string password); // it returns URL of UserService or AdminService
}