C# 通过ADFS认证的用户';s UPN到用于连接的SQL字符串
我试图根据登录用户的UPN从MS SQL数据库中提取信息。我想这对一些人来说似乎有些微不足道 在控制器中,我获取用户的UPN:C# 通过ADFS认证的用户';s UPN到用于连接的SQL字符串,c#,sql-server,model-view-controller,C#,Sql Server,Model View Controller,我试图根据登录用户的UPN从MS SQL数据库中提取信息。我想这对一些人来说似乎有些微不足道 在控制器中,我获取用户的UPN: var identity = (ClaimsIdentity)User.Identity; loggedInUser.UserHandle = identity.Claims.Where(c => c.Type == ClaimTypes.Upn).First().Value; //get userHandle from UPN int index = logge
var identity = (ClaimsIdentity)User.Identity;
loggedInUser.UserHandle = identity.Claims.Where(c => c.Type == ClaimTypes.Upn).First().Value;
//get userHandle from UPN
int index = loggedInUser.UserHandle.LastIndexOf("@");
if (index > 0)
loggedInUser.UserHandle = loggedInUser.UserHandle.Substring(0, index);
以下是我试图获取的数据:
String sql = "Select * from [MyDatabase].[dbo].[TableName] where UserHandle = @userHandle";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("userHandle", loggedInUser.UserHandle));
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
user.FirstName = reader["FirstName"].ToString();
user.LastName = reader["LastName"].ToString();
}
conn.Close();
}
return View(loggedInUser);
我可以使用@Model.UserHandle在视图中看到正确的UserHandle。但它在Controller中返回null,因此我无法从表中获取firstName和LastName
我做错了什么?如何获取要在sql字符串中使用的UPN值,以便从表中获取数据?将此保留在此处以防万一 我需要通过'user'而不是'loggedInUser':
return View(user);
我会把这个留在这里以防万一 我需要通过'user'而不是'loggedInUser':
return View(user);