ASP.NET通过自定义WCF休息调用登录

时间:2010-09-08 19:59:30

标签: asp.net wcf asp.net-membership

我正在ASP.NET中编写一个管理面板,用于现有的一组Web服务调用。我的目标是使用一些现有的登录内容(如果您没有登录则锁定页面)等,但使用我的登录机制。这可以通过使用用户名和密码命中一个http post请求,如果你很好,你会得到一个会话ID,如果没有你得到401.这是WCF:

        [WebInvoke(UriTemplate = "/Login/", Method = "POST")]
        public String Login(User user)
        {     
            // If we are good return sessiond id
            // Otherwise throw 401 etc

那么要在ASP.Net中使用它需要什么?

我想这个:

  • 实现覆盖MembershipUser的用户,并在其中包含会话ID。
  • 实现覆盖MembershipProvider的成员资格提供程序,并执行所有WCF调用等。
  • 在Web.Config中设置自定义成员资格提供程序。

这是正确的还是我错过了一些重要的东西?

1 个答案:

答案 0 :(得分:1)

您可能需要查看WCF Authentication服务,而不是自己动手。

在沿着这条路线走下去之前,请注意认证服务支持登录和注销,但这是关于它的。常见的Membership方法(例如CreateUser)不可用。如果您需要它们,您需要创建三个项目:

  1. 一个WCF服务应用程序,其中包含一个名为WCFMembershipService的服务,它包含核心成员资格提供程序要求,即调用Membership.Provider.Method()。在SQLMembershipProvider
  2. 中配置标准web.config
  3. 要在步骤1中调用WCF服务的ASP.NET应用程序中使用的自定义成员资格提供程序,
  4. 配置了自定义成员资格提供程序的ASP.NET应用程序
  5. 您会发现MembershipRole提供商非常容易,但Profile提供商更具挑战性,因为您无法序列化提供商所需的默认属性,例如SettingsPropertyValueCollection

    在这种情况下,您需要先将SettingsPropertyValueCollection转换为可序列化类型,然后在另一端重新构建它。可能Dictionary<string, string>()就足够了。