2010-03-16 54 views
0

我创建了一个已经是存储在现有的数据库表的用户一个Web应用程序自定义的成员提供。我使用了教程中的一些代码来帮助启动我的提供程序,但是我对于如何与实际登录过程进行交互有点遗憾。定制ASP.Net成员和登录控制

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

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

回答

0

正如约翰说,不要让你的供应商代码存储在会话的用户信息。相反,你可以使用一个登录控件(here你有一些关于它的更多详细信息),它会使用您的供应商,如果一切都配置正确,如果登录成功(在你的情况下,它会因为你返回true )你可以在OnLoggedIn事件处理程序的用户,通过调用提供的方法的getUser,并存储在的MembershipUser回来了。

你的代码可能看起来类似这样:

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

我同意你的关注点分离,我不打算把管理中的成员资格提供用户状态代码,而是寻找一些方法挂钩到成功的身份验证并在另一个类中运行一些代码。你的回答非常有帮助,正是我所期待的。 – JBeckton 2010-03-16 15:42:43

0

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