2

我目前仍然是一名初级程序员,并且已经从以前的程序员那里接手,我正忙于继续他的 ASP.NET 网站。他创建了自己的登录名,我不知道如何将当前登录的用户显示到只读文本框中。

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

这是 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 类

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;
    }
}

我将如何将当前登录的用户名加载到只读文本框中,一旦将一条记录添加到数据库中以获取当前登录用户的用户 ID。

我正在使用 C#、Sql 服务器和 linq

谢谢

4

2 回答 2

3

由于登录代码设置了表单验证 cookie,您应该能够使用:

public static string GetUsername() {
    var ident = System.Web.HttpContext.Current.User.Identity;
    return ident.IsAuthenticated ? ident.Name : null;
}
于 2013-05-17T08:50:09.463 回答
1

这很简单,只需分配usernameTextBox喜欢

Textbox1.Text = username;

为了获得UserIDCurrent Login User需要打电话给select query喜欢的人

Select UserId from tablename where username = "Pass username";

username必须是唯一的,否则您将UserId从此查询中获得多个。

您需要使用这种类型的场景。

希望您理解并为您工作。

于 2013-05-17T08:45:27.493 回答