Sruthi Jk Ответов: 0

Как я могу добавить новый параметр в тело, а не давать заголовок В аутентификации токена C#


Я хочу дать этому deviceid в качестве параметра в теле, а не в заголовке ? Как я могу прочитать новый параметр в качестве типа запроса тела

Что я уже пробовал:

try
                {
                    string deviceId = "";
                    var request = context.Request;
                     if (request.Headers.ContainsKey("deviceID"))
                   {
                     deviceId = request.Headers.Get("deviceID");
                     }
                    tblUserLogin entry = obj.tblUserLogins.Where<tbluserlogin>                    (record => record.UserName == context.UserName &&
                    record.Password == context.Password).FirstOrDefault();

               
                    var res = (from c in obj.tblUserLogins where c.UserName == context.UserName && c.Password == context.Password select c ).FirstOrDefault();
                    if (res != null)
                    {
                        var result = (from device in obj.tbl_VCA_Device where device.FKUserLogin == res.PKUserLogin && device.DeviceID == deviceId
                                      select device
                                      ).FirstOrDefault();
                        if (result == null)
                        {
                            context.SetError("invalid_grant", "Device is not found");

                            return;
                        }
                    }
                    else
                    {
                        context.SetError("invalid_grant",
                        "The user name or password is incorrect.");
                        return;

                    }
                   
                }

Afzaal Ahmad Zeeshan

Затем загрузите его в тело запроса. Вы не показали код, который используете для отправить запрос.

Скорее всего, вы можете отправить объект во время отправки запроса — httpClient.PostAsync(data) где данные будут содержать идентификатор.

На сервере вы бы обработали тип запроса, а затем прочитали его тело — вместо того, чтобы читать его в коллекции заголовков.

Sruthi Jk

Owin не содержит определения для PostAsync

David_Wimbley

Вы не дали достаточно информации (как мы должны знать, что вы используете OWIN для того, что вы делаете?), но кажется, что код, который вы опубликовали, может означать, что вы написали пользовательский атрибут аутентификации?

Если это так, то вы не должны использовать идентификатор устройства как часть заголовка auth и просто включать все, что вам нужно сделать с идентификатором устройства, как часть самой конечной точки API.

Если вам нужен идентификатор устройства как часть вашей аутентификации, чем без дополнительной информации, вы, вероятно, застряли, используя идентификатор устройства как часть вашего атрибута аутентификации/передавая его через заголовок.

Sruthi Jk

да, я застрял, используя deviceid в заголовке.Я хотел бы добавить новый параметр из таблицы deviceId в тело .OAuthGrantResourceOwnerCredentialscontext содержит имя пользователя и пароль .Возможно ли это

David_Wimbley

Я могу быть сбит с толку, но если вы добавили идентификатор устройства в заголовок и больше не хотите его использовать, чем не используете...я не вижу, в чем проблема. Если он вам нужен в другом месте, то измените свой код, чтобы реализовать решение, которое позволяет удалить его из заголовка auth и передать через тело запроса post

У меня нет доступа к вашему компьютеру или коду, так что вам придется попробовать.

Sruthi Jk

Сэр, можете ли вы поделиться какой-либо ссылкой для добавления параметра в тело в аутентификации toke

0 Ответов