如何使用MembershipProvider手动登录用户?

时间:2010-04-05 15:24:02

标签: c# asp.net login asp.net-membership

我正在尝试在asp.net中编写自己的自定义MembershipProvider,我想要滚动自己的登录页面。我们在登录时做了一些相当特殊的事情,所以我们不能使用默认的登录控件,所以我需要一种手动登录用户的方法。

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

我试过

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

虽然这会在我的自定义ValidateUser()上调用MembershipProvider,但它确实返回true,但它实际上并不会让我登录。

顺便说一下,我对整个MembershipProvider的东西都很陌生,所以如果我的波长不合适,请随时告诉我。

3 个答案:

答案 0 :(得分:11)

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

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

上述内容是在工作代码中使用自定义成员资格提供程序复制的,就像您的情况一样,我们需要在登录时做一些额外的工作。 (敏感的行动是为了保护无辜者。)

答案 1 :(得分:8)

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

答案 2 :(得分:1)

为了将来参考,如果您使用Reflector查看装配体内部,可以查看任何组件的内部代码:

有一个免费版本,可以满足您的所有需求。

此外,您不必创建自己的Login控件,因为Login非常易于扩展。您可以编辑模板并处理各种事件,以使其完成您想要的操作。