自定义ASP.Net成员身份和登录控件

时间:2010-03-16 03:38:27

标签: asp.net asp.net-membership asp.net-profiles

我正在为已经将其用户存储在现有数据库表中的Web应用程序创建自定义成员资格提供程序。我使用了一些教程中的一些代码来帮助我启动我的提供程序,但是我对如何与实际登录过程进行交互感到有点迷失。

我的自定义提供程序有一个ValidateUser()的覆盖方法,目前我只是在那里返回true。但我想创建一个当前用户对象来存储在会话范围内。该对象将存储有关用户的一些细节。

我想另一种选择是使用ASP.Net配置文件提供程序,但我又不清楚在哪里挂钩登录进程来运行一些代码,这些代码可以创建此用户对象或填充当前的配置文件信息用户。

2 个答案:

答案 0 :(得分:0)

使用“关注点分离”原则,您的会员提供商不应在会话中存储任何用户信息。

答案 1 :(得分:0)

正如John所说,不要让你的提供者代码在Session中存储用户信息。相反,你可以使用一个登录控件(here,你有更多的细节),如果一切都配置正确,它将使用你的提供者,如果登录成功(在你的情况下,这将是因为你'返回true)您可以通过调用提供程序的GetUser方法获取OnLoggedIn事件处理程序中的用户,并存储Session中返回的MembershipUser。

您的代码可能与此类似:

protected void LoginCtrl_LoggedIn(object sender, EventArgs e)
{
    var user = Membership.GetUser(LoginCtrl.UserName, true);
    Session["CurrentUser"] = user;
}