我有一个我在ASP.NET中构建的Web应用程序,它具有以下安全要求:
我已经尝试过自定义SQL角色和成员资格提供程序,但是我遇到了一些问题,特别是有一个强类型的MembershipUser对象,它有一个uniqueIdentifier(providerKey)并且没有我自己的自定义集的空间。用于识别用户的密钥(将有两个)。
我应该废弃我的自定义成员资格提供程序实现,而只是使用Cookie / session吗?我真的很想使用内置功能,但它似乎并不可行。
答案 0 :(得分:1)
您可能想要做的是在现有功能的顶部构建项目1,首先尝试。使用返回的信息,自动将用户登录。如果第一个进程失败,请使用内置代码执行标准身份验证。
我已经为使用DotNetNuke的客户多次在ASP.NET成员资格提供程序之上构建了这种类型的系统,它运行良好。
答案 1 :(得分:0)
来自Scott Guthrie博客的here's the source to the built in ASP.NET 2.0 Membership provider。
答案 2 :(得分:0)
我成功地放弃了会员提供商,根本没有使用它。我创建了一个新的IMembershipService接口和一个实现,用于处理我的Web应用程序用户的创建和验证。
我创建了自己的用户模型。这允许我在我的应用程序中拥有灵活的角色模型。我可以自由地创建上下文域角色并将它们与实际用户模型分离。
真的不是那么难。记得给你的密码加盐等,并阅读一些安全书。
您仍然可以使用此方法使用FormsAuthentication。
大多数依赖asp.net会员提供商的系统在某种程度上都是精神分裂症。您将拥有2个Users表,例如在CommunityServer中您有aspnet_users和cs_Users,其中cs_Users引用aspnet_users的MembershipId以及它引入另一个UserId。它还反映了用户名等。