我正在尝试在asp.net中编写自己的自定义MembershipProvider
,我想要滚动自己的登录页面。我们在登录时做了一些相当特殊的事情,所以我们不能使用默认的登录控件,所以我需要一种手动登录用户的方法。
到目前为止,我还没有找到关于如何编写自己的登录控件的内容,所以我在这里,想知道如何通过MembershipProvider
手动登录用户。
我试过
Membership.ValidateUser("user", "pass");
虽然这会在我的自定义ValidateUser()
上调用MembershipProvider
,但它确实返回true,但它实际上并不会让我登录。
顺便说一下,我对整个MembershipProvider
的东西都很陌生,所以如果我的波长不合适,请随时告诉我。
答案 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非常易于扩展。您可以编辑模板并处理各种事件,以使其完成您想要的操作。