2010-09-08 68 views
1

我正在为ASP.NET的一个管理面板编写一组现有的Web服务调用。我的目标是使用一些现有的登录功能(如果您未登录,则锁定页面)等,但使用我的登录机制。该作品以击中一个用户名和密码的HTTP POST请求,如果你很好,你得到一个会话ID后面,如果不是你得到一个401这里是WCF为:ASP.NET通过自定义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

与其自己做这个,你可能想看看WCFAuthentication服务。

在你走下这条路线之前,请注意身份验证服务支持登录和注销,但这是关于它的。通常的Membership方法如CreateUser不可用。如果需要的话,你需要创建三个项目:

  1. 一个WCF服务应用程序与一个服务叫做WCFMembershipService包裹该核心成员提供商的要求,即主叫Membership.Provider.Method()。配置在web.config标准SQLMembershipProvider,并且
  2. 在步骤1调用WCF服务的ASP.NET应用程序中使用自定义成员资格提供者,
  3. 一个ASP.NET使用自定义成员资格提供配置
  4. 应用

你会发现,MembershipRole供应商是非常容易的,但Profile提供更具挑战性,因为你不能序列化提供商需要默认属性,如SettingsPropertyValueCollection

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