【发布时间】:2011-03-06 02:57:05
【问题描述】:
我使用电子邮件地址作为登录的“用户名”。当用户登录时,创建的用户对象的名称为电子邮件地址,这是不正确的。实际名称是数据库中的另一个字段。如何登录并针对电子邮件地址进行身份验证,然后在 User 对象中加载正确的名称?
我正在使用带有自定义 MembershipProvider 和 RoleProvider 的表单身份验证。
编辑下方以澄清
我有一个自定义 MembershipProvider,它通过电子邮件地址和密码验证用户。它由基本登录控件调用并在 web.config 中注册。
<asp:Login ID="AdminLogin" runat="server" MembershipProvider="AdminMembershipProvider">
</asp:Login>
Web.Config:
<authentication mode="Forms">
<forms loginUrl="Default.aspx" />
</authentication>
<membership defaultProvider="AdminMembershipProvider">
<providers>
<clear />
<add name="AdminMembershipProvider"
type="AdminMembershipProvider"
connectionStringName="EvalSysConnectionString"
/>
</providers>
</membership>
只有这样我的用户才能正确登录。但是,它会返回电子邮件地址的 Context.User.Identity.Name。我在数据库中存储了名字和姓氏,并希望这是名称。
我阅读了各种帖子,这些帖子似乎表明我必须创建一个 Global.asax 文件并覆盖 PostAutheticateRequest 方法来执行此操作。但是我不知道如何继续这个策略。
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_PostAuthenticateRequest()
{
string test = HttpContext.Current.User.ToString();
}
</script>
对不起,我的问题太含糊了。我很迷茫,以至于我不知道如何写一个好问题。
【问题讨论】:
-
问题没什么意义......你试过什么?
-
同意米奇。您需要发布您尝试过的内容、如何调用 MembershipProvider 等。