ASP.NET如何从SQL数据库中获取当前登录的用户名和ID

时间:2013-05-17 08:39:04

标签: c# asp.net sql linq

我目前仍然是一名初级程序员,并且已经接替了以前的程序员,我正忙着继续他的ASP.NET网站。他创建了自己的登录名,但我无法弄清楚如何将当前登录的用户显示在ReadOnly文本框中。

textBox是readonly的原因是因为一旦用户登录到网站,任何插入SQL数据库的数据都会添加当前登录的用户ID,但为了方便,用户名会显示在readOnly文本框中。 / p>

这是login.aspx的代码

protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e)
    {
        LoggedMember member = new LoggedMember();

        if (LoginUser.UserName.Contains('@'))
        {
            member = Login.LogInContact(LoginUser.UserName, LoginUser.Password);
        }
        else
        {
            member = Login.LogInUser(LoginUser.UserName, LoginUser.Password);
        }

        if (member.ID != 0)
        {
            Session["LoggedMember"] = member;
            FormsAuthentication.SetAuthCookie(member.UserName, true);
            e.Authenticated = true;
            Response.Redirect("~/pages/Monitor.aspx");
        }
        else
        {
            Session["LoggedMember"] = null;
            e.Authenticated = false;
        }

    }

LoggedMember Class

public class LoggedMember
{
    public int ID { get; set; }
    public string UserName { get; set; }
    public UserProfile Profile { get; set; }
}

登录类

public class Login
{
    public static LoggedMember LogInUser(string username, string password)
    {
        LoginContext db = new LoginContext();

        User user = db.Users.Where(u => u.UserName == username && u.Password == password).SingleOrDefault();

        LoggedMember member = new LoggedMember();
        if (user != null)
        {
            if (user.UserID != 0)
            {
                member = new LoggedMember()
                {
                    ID = user.UserID,
                    UserName = user.UserName
                };
            }
        }

        if (user != null)
        {
            member.Profile = UserProfile.GetUserProfileAndSettings((int)user.UserProfileID);
        }
        else
        {
            member.Profile = UserProfile.GetUserProfileAndSettings(0);
        }
        return member;
    }

    public static LoggedMember LogInContact(string username, string password)
    {
        LoginContext db = new LoginContext();

        Contact contact = db.Contacts.Where(u => u.Email == username && u.Password == password).SingleOrDefault();

        LoggedMember member = new LoggedMember();
        if (contact.ContactID != 0)
        {
            member = new LoggedMember()
            {
                ID = contact.ContactID,
                UserName = contact.FirstName + ' ' + contact.LastName
            };
        }

        return member;
    }
}

如何将当前登录的userName加载到ReadOnly textBox中,并将记录添加到数据库中以获取当前登录用户的userID。

我正在使用C#,Sql server和linq

谢谢

2 个答案:

答案 0 :(得分:3)

由于登录代码设置了form-auth cookie,您应该可以使用:

public static string GetUsername() {
    var ident = System.Web.HttpContext.Current.User.Identity;
    return ident.IsAuthenticated ? ident.Name : null;
}

答案 1 :(得分:1)

username分配给TextBox就像

一样非常简单
Textbox1.Text = username;

要获取UserID的{​​{1}},您需要拨打Current Login User

select query

您的Select UserId from tablename where username = "Pass username"; 必须是唯一的,否则您将从此查询中获得多个username

您需要使用此类方案。

希望您理解并为您服务。