Передача имени пользователя с идентификатором ADFS в строку SQL для подключения - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь получить информацию из базы данных 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 = 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);

Я вижу правильный UserHandle в View, используя @ Model.UserHandle.Но он возвращает ноль в Controller, поэтому я не могу получить firstName и LastName из таблицы.

Что я делаю не так?Как я могу получить значение UPN для использования в моей строке SQL, чтобы я мог получить данные из таблицы?

1 Ответ

0 голосов
/ 18 февраля 2019

Оставлю это здесь на всякий случай.

Мне нужно было передать 'user' вместо 'loggedInUser':

return View(user);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...