WCF服务:如何授权用户

时间:2010-07-06 19:39:02

标签: .net asp.net wcf silverlight silverlight-4.0

WCF服务由ASP.NET网站托管。 ASP.NET成员资格未在网站中使用。使用“自定义”页面记录用户,记录用户的ID存储在Session(HttpContext.Current.Session)中。

Silverlight(4版)应用程序使用WCF服务。

如何检查当前用户(加载的Silverlight应用程序)是否有权访问某个WCF方法?

我看到几个选项:

  1. 在请求WCF方法期间检查HttpContext.Current.Session对象是否包含用户ID。此方法对我不起作用(HttpContext.Current in WCF service during 2nd request)。
  2. 使用OperationContext - 我不知道如何使用它。
  3. 你可以请:

    一个。建议我如何解决上面列出的任何问题;

    OR(可能更好的选择)

    湾建议我任何其他方法。

    非常感谢你。

4 个答案:

答案 0 :(得分:0)

  1. 您可以像在InitParameter中一样将HttpContext.Current.Session [“ YourUserID ”]传递给Silverlight 4应用程序;
  2. 将该值添加到应用程序资源中,以便在整个SL应用程序中可用;
  3. 并将其作为方法调用中的参数传递给WCF服务;
  4. 验证该用户是否已获得授权
  5. 以下是一个例子:

    对于持有silverlight控件的页面:

    protected void Page_Load(object sender, EventArgs e)  
    {  
        this.Silverlight1.InitParameters = "UserID" + HttpContext.Current.Session["UserID"];  
    }  
    

    在App.Xaml.cs

    private void Application_Startup(object sender, StartupEventArgs e)  
    {  
       this.Resources.Add("UserId", e.InitParams["UserID"]);  
    }  
    

答案 1 :(得分:0)

我相信您可以使用OperationContext并使用您的WCF请求发送会话cookie。在服务器端,它将恢复正确的HttpContext.Current.Session,您可以手动执行此操作。

答案 2 :(得分:0)

查看内置的Silverlight 4 Business模板 - 它包含使用WCF RIA服务的用户的验证和授权。

答案 3 :(得分:0)

这是一个魔术......现在HttpContext.Current在每个请求期间都是非空的...不知道为什么......如果你知道为什么可能 - 请告诉我。我可以用它来进行用户授权......