На каких языках можно использовать класс System.Net.CookieContainer? - PullRequest
0 голосов
/ 10 августа 2010

Я работаю над веб-сервисом, с которым нужно связаться из разных клиентов.
Поскольку я никогда не знаю, на каком языке будет использовать клиент, мне было интересно, может ли каждый язык получить и передать класс типа "Система".Net.CookieContainer ".

Пример: у меня есть веб-сервис, который аутентифицирует клиента и возвращает CookieContainer (это можно передать в следующих запросах).Таким образом, я могу сохранить этот сеанс активным.

Клиент 1 будет использовать .net (это, очевидно, работает).
Клиент 2 будет использовать php (будет ли это работать?).Клиент 3 будет использовать Java (будет ли это работать?).

Причина, по которой я хотел бы использовать это, заключается в том, что пользователь может проходить аутентификацию с помощью нашего веб-сервиса, и в следующих запросах ему не нужно выполнять аутентификациюснова.

После некоторых поисков я нашел решение CookieContainer.

Есть мысли?

Приветствия, М.

Ответы [ 3 ]

1 голос
/ 10 августа 2010

Похоже, вы просто хотите, чтобы люди могли проходить проверку подлинности, прежде чем они смогут использовать ваш веб-сервис.Для этого вам не нужно передавать класс CookieContainer туда-сюда, вы можете просто использовать проверку подлинности с помощью форм, чтобы позволить людям войти в систему.

Как только кто-то передает правильные учетные данные через какую-либо функцию входа, которую вы можете вызвать1004 * для установки информации о сеансе.Затем при каждом вызове вы можете проверить, чтобы убедиться, что они аутентифицированы с User.Identity.IsAuthenticated

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

1 голос
/ 10 августа 2010

Если вы вернете класс из веб-службы, он будет сериализован в XML. Поскольку это класс .net, языки .net смогут десериализовать его обратно в реальный класс. Другие языки могут получить доступ к сериализованному классу только для того, чтобы получить данные или, возможно, десализовать их в пользовательский класс, который соответствует сложному типу xsd для класса, если язык поддерживает эту функцию. Однако это приведет только к вводу любых данных в классе, любой метод, который является частью класса, на самом деле не сериализован, только кажется, что он находится в .net, потому что, когда класс десериализован, .net создаст экземпляр класса и добавит свойства с данными из сериализованного класса.

0 голосов
/ 10 августа 2010

Неясно, что вы подразумеваете под «возвращает CookieContainer». Веб-сервис, как следует из названия, является сервисом в Интернете - в Интернете у нас есть веб-запросов (HTTP-запросы), и они возвращают HTTP-ответ, HTTP-ответ может включать или не включать файлы cookie, которые клиент запомнит для последующих запросов. Пока что это не зависит от какого-либо языка программирования.

Вы не указали, для чего написан ваш веб-сервис, но, поскольку вы имеете в виду тип .NET, вероятно, это будет какой-то язык .NET, возможно, C # / ASP.NET. Я не уверен, как бы вы «вернули CookieContainer» в этом; обычно вы устанавливаете свои куки, используя метод SetCookie(...) для вашего HttpResponse объекта. Если вы сделаете это таким образом, PHP и Java увидят файлы cookie как обычные файлы cookie HTTP, и вам не нужно заботиться о том, что они пришли из .NET. Например, в клиенте PHP вы, вероятно, будете использовать HttpRequest :: send для вызова веб-запроса, а затем вы можете использовать HttpRequest :: getResponseCookies для получения файлов cookie.

...