0

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

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

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

4

2 回答 2

0

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

于 2010-03-16T03:58:31.450 回答
0

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

您的代码可能类似于以下内容:

protected void LoginCtrl_LoggedIn(object sender, EventArgs e)
{
    var user = Membership.GetUser(LoginCtrl.UserName, true);
    Session["CurrentUser"] = user;
}
于 2010-03-16T04:12:20.677 回答