2

私は現在まだジュニア プログラマーであり、以前のプログラマーから引き継ぎました。彼の ASP.NET Web サイトの作成に忙しくしています。彼は自分のログインを作成しましたが、現在ログインしているユーザーを読み取り専用テキストボックスに表示する方法がわかりません。

textBox が読み取り専用である理由は、ユーザーが Web サイトにログオンすると、SQL データベースに挿入されるすべてのデータが現在ログインしているユーザー ID に追加されるためですが、便宜上、ユーザー名は読み取り専用の textBox に表示されます。

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

現在ログインしているuserNameをReadOnlyテキストボックスにロードし、データベースにレコードを追加して現在ログインしているユーザーのユーザー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 に答える