代码之家  ›  专栏  ›  技术社区  ›  Budda

WCF服务:如何授权用户

  •  1
  • Budda  · 技术社区  · 15 年前

    WCF服务由ASP.NET网站托管。网站中未使用ASP.NET成员身份。用户使用“自定义”页面登录,登录用户的ID存储到会话(HttpContext.Current.Session)中。

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

    我几乎没有选择:

    1. 在请求WCF方法的过程中,检查HttpContext.Current.Session对象是否包含用户id。此方法不适用于我( HttpContext.Current in WCF service during 2nd request
    2. 使用OperationContext-我不知道如何使用它。

    你能不能:

    答。建议我如何解决上述任何问题;

    或者(可能更好的选择)

    b。建议我其他方法。

    4 回复  |  直到 8 年前
        1
  •  0
  •   Ritik Khatwani    15 年前
    1. 您可以传入HttpContext.Current.Session[“ “]到Silverlight 4应用程序,如InitParameter中所示;
    2. 并将其作为方法调用中的参数传递给WCF服务;

    举个例子:

    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"]);  
    }  
    
        2
  •  0
  •   Insomniac    15 年前

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

        3
  •  0
  •   thomasmartinsen    15 年前

    看看silverlight4业务模板中的构建—它包含对使用WCF RIA服务的用户的验证和授权。

        4
  •  0
  •   Budda    15 年前

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

    推荐文章