C# ASP.NET如何从SQL数据库获取当前登录的用户名和ID
我目前还是一名初级程序员,已经从以前的程序员那里接管了工作,我正忙于他的ASP.NET网站。他创建了自己的登录名,我不知道如何在只读文本框中显示当前登录的用户 文本框为只读的原因是,一旦用户登录到网站,插入到SQL数据库中的任何数据都会添加到当前登录的用户ID中,但为了方便起见,用户名会显示在只读文本框中 下面是login.aspx的代码C# ASP.NET如何从SQL数据库获取当前登录的用户名和ID,c#,asp.net,sql,linq,C#,Asp.net,Sql,Linq,我目前还是一名初级程序员,已经从以前的程序员那里接管了工作,我正忙于他的ASP.NET网站。他创建了自己的登录名,我不知道如何在只读文本框中显示当前登录的用户 文本框为只读的原因是,一旦用户登录到网站,插入到SQL数据库中的任何数据都会添加到当前登录的用户ID中,但为了方便起见,用户名会显示在只读文本框中 下面是login.aspx的代码 protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e)
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;
}
}
我如何将当前登录的用户名加载到只读文本框中,并在数据库中添加一条记录以获取当前登录用户的用户名
我正在使用C、Sql server和linq
谢谢只需将用户名分配给文本框即可,如 要获取当前登录用户的UserID,需要调用select查询,如 您的用户名必须是唯一的,否则您将从此查询中获得多个用户名 您需要使用这种类型的场景
希望你能理解并为你工作 只需将用户名分配给文本框(如 要获取当前登录用户的UserID,需要调用select查询,如 您的用户名必须是唯一的,否则您将从此查询中获得多个用户名 您需要使用这种类型的场景
希望你能理解并为你工作 由于登录代码设置了forms auth cookie,您应该能够使用:
public static string GetUsername() {
var ident = System.Web.HttpContext.Current.User.Identity;
return ident.IsAuthenticated ? ident.Name : null;
}
由于登录代码设置了forms auth cookie,您应该能够使用:
public static string GetUsername() {
var ident = System.Web.HttpContext.Current.User.Identity;
return ident.IsAuthenticated ? ident.Name : null;
}
纯文本密码警报。。。有人需要提示:存储密码,甚至是加密密码,这是一个非常糟糕的主意;你应该用salt+hash来代替纯文本密码警报。。。有人需要提示:存储密码,甚至是加密密码,这是一个非常糟糕的主意;你应该用salt+hash来代替。对不起,我只是为了测试而将其设置为true,它最初是false。你的代码确实有效。但是我如何能够从插入文本框的值访问UserID呢。因为当我将数据插入SQL数据库时,我不添加用户名,而是插入userID's@user2343291存储复合值比较困难;您可以编写自定义主体,但这很复杂;您可以将登录名存储为12345:fred,但这需要更改当前访问它的任何代码。也许最简单的方法就是将name=>id映射缓存在内存中,然后向上查找。对不起,我将其设置为true只是为了测试,它最初是false。你的代码确实有效。但是我如何能够从插入文本框的值访问UserID呢。因为当我将数据插入SQL数据库时,我不添加用户名,而是插入userID's@user2343291存储复合值比较困难;您可以编写自定义主体,但这很复杂;您可以将登录名存储为12345:fred,但这需要更改当前访问它的任何代码。也许最简单的方法就是将name=>id映射缓存在内存中并查找它
public static string GetUsername() {
var ident = System.Web.HttpContext.Current.User.Identity;
return ident.IsAuthenticated ? ident.Name : null;
}