我正在使用Asp.Net
内置membership framework
,我需要显示logged-in
用户的名称,我的aspnet_users
表存储用户命名为abc001
这个实际上是用户的用户代码,其用户名存储在另一个表中,该表与aspnet_users
表链接foreign key constraint
。所以如何显示导航菜单中该表格中的用户名称将向右浮动。像Facebook
这样,它会在标题中显示logged-in
个用户名。
修改
protected void cmdLogin_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(txtUsername.Text, txtPassword.Text))
{
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(txtUsername.Text, false);
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, "");
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Add(authCookie);
GetUserName();
string redirUrl = FormsAuthentication.GetRedirectUrl(txtUsername.Text, false);
Response.Redirect(redirUrl);
}
}
public void GetUserName()
{
DataClasses1DataContext dt = new DataClasses1DataContext();
var name =( from nm in dt.Users_AdditionalInfos
where nm.UserCode== txtUsername.Text.Trim()
select nm).Single();
Global.UserName=name.FirstName +" "+ name.LastName;
}
由于
答案 0 :(得分:1)
你可以使用,
Membership.GetUser().UserName
...获取当前登录用户。如果用户未登录,您将获得GetUser()
返回的 null 值,因此代码相应。
答案 1 :(得分:0)
尝试User.Identity.Name
了解更多信息 HttpContext.User Property
如果您需要从另一个表中获取不同的信息,您可以获得username
并执行类似的操作
MembershipUser userInfo = Membership.GetUser("myUserName");
Guid guid = new Guid(userInfo.ProviderUserKey.ToString());
ProviderUserKey
对每个用户都是唯一的,我猜您使用它作为外键。因为您有ProviderUserKey
,您可以从其他表中获取必要的详细信息
答案 2 :(得分:0)
User.Identity.Name
可用于访问用户的用户名。看一下本教程,它进一步解释了如何获取用户的会员信息。 http://mvctutorialsandguides.blogspot.co.nz/2013/03/mvc-c-sql-membership-provider-how-to.html希望这有帮助。