如何从自定义表中获取UserID
本文关键字:获取 UserID 自定义 | 更新日期: 2023-09-27 18:14:54
我希望能够获得当前用户登录我的网站的ID。
的事情是,我没有试图得到Guid,但User_ID,这是一个字段,我有一个自定义表的我叫用户。在这个表中,我有User_ID,它是PK, UserId是来自表aspnet_Users的FK。
我想要这个字段的原因是因为我有一个表购买,每次一个用户登录按下按钮说(购买),一个新的saleId增加和User_ID购买它。在我的表Users上,User_ID是int类型,从1开始,并且每次在站点上注册新用户时都增加。
因此,通过ID(1,2,3)来检查用户比使用30个字符的唯一标识符
更容易我的想法是这样的:
protected void Button1_Click(object sender, EventArgs e)
{
string InsertSql = "INSERT INTO [Purchase] (User_ID) VALUES (@User_ID)";
using (Connection)
{
Connection.Open();
SqlCommand com = new SqlCommand(InsertSql, Connection);
com.Paramaters.AddWithValue("@User_ID", ????);
com.ExecuteNonQuery();
cn.Close();
}
}
????在哪里我需要以某种方式获得当前用户登录的User_ID,这是在我的自定义表用户。
Thanks for the help
登录到您的应用程序后,您应该维护userid到会话变量。这样以后你就可以直接使用了
: -
//while user logged-in,push userid into session variable:-
Session["userid"] = 12;
//And later on in oyur page you can use it like :-
com.Paramaters.AddWithValue("@User_ID", (int)Session["userid"]);
假设使用已登录
使用User.Identity.Name
检查用户是否通过认证:
User.Identity.IsAuthenticated
它将为您提供asp.net应用程序中当前登录用户的名称。
com.Paramaters.AddWithValue("@User_ID", User.Identity.Name);
如果我理解正确,您有一个自定义表Users
,其中PK User_ID
和列UserId
是表aspnet_Users的FK。
您已经知道了登录用户的UserName,那么为什么不简单地执行如下操作:
string InsertSql = @"
INSERT INTO [Purchase] (User_ID)
SELECT U.User_ID FROM Users U
INNER JOIN aspnet_Users AU ON U.UserId = AU.UserId
WHERE AU.LoweredUserName = LCASE(@UserName)
";
您的@UserName
参数是您已经知道的当前登录用户的名称(HttpContext.Current.User.Name
),并且您不需要知道User_ID。
如果使用Membership
,则
如果已验证,则获取名称。
if (User.Identity.IsAuthenticated)
Label1.Text = HttpContext.Current.User.Identity.Name;
else
Label1.Text = "No user identity available.";
如果您想获得userid
,那么运行select
查询,如
Select userid from tablename where username = 'pass here username';
通过运行此查询,您将获得userid
,并在需要时使用该userid
。
参数化查询:
com.Paramaters.AddWithValue("@User_ID", HttpContext.Current.User.Identity.Name);
,如果你没有使用Membership
,那么在login
的时候,从你的username
中获得userid
,并使用任何你想要的地方。
注意:确保你有唯一的username
,否则它会给你多个userid
。
逻辑2:使用MembershipUser
对象的ProviderUserKey
成员,像这样:
MembershipUser user = Membership.GetUser();
string userid = user.ProviderUserKey.ToString();
我终于做到了,我有点转移到我需要在我的网站上做的其他事情,所以我今天才弄清楚。
我只是想感谢所有的回复,把解决方案留给我自己的问题。基本上我做错的是选择命令。我不是很擅长SQL,所以我不知道应该把它放在xD,但现在我知道了。
protected void Button1_Click(对象发送者,EventArgs e)
{
MembershipUser usr = Membership.GetUser(HttpContext.Current.User.Identity.Name);
Guid usrid = (Guid)usr.ProviderUserKey;
String product= DropDownList1.SelectedValue.ToString();
string InsertSql= "INSERT INTO [Purchase] (Product_ID, User_ID) VALUES (@Product_ID,(SELECT User_ID from [Users] where UserId = @UserId))";
using (Connection)
{
Connection.Open();
SqlCommand com = new SqlCommand(InsertSql, Connection);
com.Parameters.AddWithValue("@Product_ID", product);
com.Parameters.AddWithValue("@UserId", usrid);
com.ExecuteNonQuery();
Connection.Close();
}
Response.Redirect("Purchase.aspx");
}
再次感谢所有的耐心和帮助照顾