2010-04-05 48 views
3

我用asp.net写我自己的自定义MembershipProvider尝试,我想推出自己的登录页面。我们做了一些相当特殊的东西在登录时如此,所以我需要一种方法来手动登录用户不能使用默认的登录控制。如何使用MembershipProvider手动登录用户?

到目前为止,我还没有找到如何编写自己的登录什么控制,所以我在这里,想知道如何我可以通过MembershipProvider手动登录用户。

我已经试过

Membership.ValidateUser("user", "pass"); 

和而不会调用ValidateUser()在我的自定义MembershipProvider,它并返回true,实际上它并不登录我进去。

顺便说一句我相当新的整体MembershipProvider的东西,所以如果我甚至没有在正确的波长,请随时让我知道。

回答

7

一个的MembershipProvider只存储有关用户,实际登录和会话处理的数据是由一个AuthenticationProvider的处理。例如,如果您使用表单(=基于cookie)身份验证,请检查FormsAuthentication.SetAuthCookie以及该类中的其他相关方法。

+0

啊谢谢你解释我的分离!这确实是我需要什么 – 2010-04-05 15:27:23

+0

是的,是的AuthenticationProvider甚至没有我的雷达,这将帮助很多 – 2010-04-05 15:35:15

+0

记住,内置的表单认证提供商合作相当精细定制的会员提供的,除非你需要非常做些什么特殊的,它应该“只是工作”。 – 2010-04-05 15:37:06

9
if (Membership.ValidateUser(Username.Text, Password.Text)) 
{ 

    FormsAuthentication.SetAuthCookie(Username.Text, false); 
    FormsAuthentication.RedirectFromLoginPage(Username.Text, false); 
} 
else 
{ 
// do something else 
} 

以上从用在一个情况跟你一样,我们需要在登录时做一堆额外的工作定义成员资格提供工作代码复制。 (敏感操作reomved保护无辜者。)

1

对于未来的参考,你可以检查出任何组件的内部代码,如果你看看组件内部进行反射:

有一个免费版本,它会做一切你需要。

而且你不应该创建自己的登录控制,因为登录是非常可扩展。您可以编辑模板并处理各种事件以使其达到您想要的效果。