0

​嗨,我在实现 WCF RoleService 时遇到了一些麻烦,特别是 GetAllRolesForCurrentUser 方法。我可以成功连接到服务,但是当我尝试为用户检索角色时,它自然会使用当前的主体身份(即运行服务的用户)。但是,我需要它用于已登录的用户。

我知道我必须传递角色服务自定义凭据(用户名/密码),但是您如何让服务模拟该用户。

4

1 回答 1

0

在 WCF 服务中实现模拟

1) 使用 OperationBehavior 装饰操作并给出“Impersonation = ImpersonationOption.Required”,如下面的代码所示

[ServiceContract]
public interface IHelloContract
{
    [OperationContract]
    string Hello(string message);
}

public class HelloService : IHelloService
{
    [OperationBehavior(Impersonation = ImpersonationOption.Required)]
    public string Hello(string message)
    {
        return "hello";
    }
}

2)客户端调用如下

  using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
    {
        HelloService.ServiceClient myService = new HelloService.ServiceClient();
        Console.WriteLine(myService.Hello("How are you?"));
        myService.Close();
    }

按照链接进一步参考: http: //msdn.microsoft.com/en-us/library/ff650591.aspx#_Step_7 :_Impersonate

于 2012-09-14T08:18:29.787 回答