Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Разработка чата на С#(WebService)


Автор: gfmail 8.1.2007, 16:26
Разрабатываю чат на С# с использованием WebService, разобрался почти со всем,
кроме того, как сделать авторизацию пользователей. Способ авторизации значения
не имеет. Есть IIS и WinXP. 

Буду благодарен за любую помощь, в т.ч. алгоритм авторизации .

Р.S. MSDN  читал, но  там всё по ASP.NET, а мне требуется клиентское WinForms приложение
(ну не слать же ему куки!).

Автор: Budda 8.1.2007, 17:25
Цитата

ну не слать же ему куки
гы, а вроде больше ничего цивилизация и не придумала... smile Может в этом я и заблуждаюсь, но чем плохи куки? smile

Автор: gfmail 8.1.2007, 17:32
 smile  извиняюсь, сказал сгоряча. Если можно, то поподробнее насчет куков.(WinForms приложение)

Автор: megatron 8.1.2007, 21:11
gfmail, Я для своего чата сам авторизацию написал, без встроенных сервисов, думаю так даже лучше.

Добавлено @ 21:13 
Цитата(gfmail @  8.1.2007,  16:26 Найти цитируемый пост)
(ну не слать же ему куки!).
 я с помощью переменной session это сделал

Автор: FatherFrost 9.1.2007, 08:29
megatron, сессия может быть реализована сама по себе на основе куков... Но лучше пользоваться сессией и настраивать возможность работы сессий, если отключены куки... Такое возможно, и это настраивается в веб.конфиге. Использование чистых куки может привести к проблемам, если у пользователя они отключены.

Автор: megatron 9.1.2007, 14:44
FatherFrost
Цитата(FatherFrost @  9.1.2007,  08:29 Найти цитируемый пост)
Такое возможно, и это настраивается в веб.конфиге. 
 Там даже и настраивать ничего не надо, параметр, который стоит по умолчанию (20мин.)  вполне подходит.

Автор: Budda 9.1.2007, 14:57
Цитата(gfmail @  8.1.2007,  17:32 Найти цитируемый пост)
извиняюсь, сказал сгоряча. Если можно, то поподробнее насчет куков.(WinForms приложение)

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

Автор: gfmail 9.1.2007, 18:40
Цитата

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


Вот это именно то что я хотел узнать. Большое спасибо, Budda. 
Если бы ещё и ссылку по теме, то было бы вообще чудесно.

Автор: mr.DUDA 10.1.2007, 00:34
Товарищи, а чем не подходит написать SoapExtension, который будет принимать в хидере логин и пароль к каждому запросу ? Ведь клиент может и переподключиться, и сессия пропадёт.

Автор: gfmail 10.1.2007, 13:43
Цитата

Товарищи, а чем не подходит написать SoapExtension, который будет принимать в хидере логин и пароль к каждому запросу ? Ведь клиент может и переподключиться, и сессия пропадёт.


Очень умные слова, а слабо новичку что-то подсказать, или хоть инфы дать.
Читал  "Разработка Web-сервисов XML и серверных компонентов на MS Visual Basic .NET и Microsoft Visual C# .NET", так там про авторизацию 1 абзац :

• Forms — позволяет Web-сервису получать учетные данные прямо от клиента через
регистрационную HTML-форму. Клиент передает учетные данные Web-сервису для
проверки. Если проверка проходит успешно, Web-сервис генерирует для клиента
файл cookie, который используется клиентом для доступа к Web-сервису. Если в за-
просе к защищенному сервису отсутствует файл cookie, клиент направляется на стра-
ницу регистрации, заданную в конфигурационном файле. Аутентификация при по-
мощи форм включается так:
Код


Authentication mode="Forins">
<forms forms-"Sales" loginUrl="/l°gin.aspx" />
</authentication>



Если можно, то хоть ссылку на пример дайте smile .

Автор: Naum 10.1.2007, 14:18
http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/cpguide/html/cpconaspnetauthentication.asp

Автор: gfmail 10.1.2007, 14:25
Цитата

MSDN


Без комментариев

Автор: Naum 10.1.2007, 16:05
Цитата(gfmail @  10.1.2007,  15:25 Найти цитируемый пост)
Без комментариев

Цитата(gfmail @  10.1.2007,  14:43 Найти цитируемый пост)
Если можно, то хоть ссылку на пример дайте

В смысле, это и есть ссылка smile 
Прошу прощения за чрезмерную лаконичность предыдущего поста.

Автор: gfmail 10.1.2007, 16:24
Цитата

В смысле, это и есть ссылка  
Прошу прощения за чрезмерную лаконичность предыдущего поста.


Это я понял, а вот это (по ссылке) :

Добавлено @ 16:27 
Цитата


Система, с помощью которой запросы, не прошедшие проверку подлинности, перенаправляются HTML-форме с помощью клиентской переадресации HTTP. Пользователь предоставляет учетные данные и отправляет форму. Если приложение удостоверяет подлинность запроса, система создает файл cookie, который содержит учетные данные или ключ для повторного запроса удостоверения. Последующие запросы содержат в заголовках файл cookie; они проверяются на подлинность и авторизуются обработчиком событий ASP.NET с использованием методов проверки, выбранных разработчиком приложения.

Необходимо задать один из режимов проверки подлинности: Windows, Forms, Passport или Отсутствует. По умолчанию используется режим Windows. Если используется значение Отсутствует, ASP.NET не применяет к запросу дополнительных проверок подлинности, что может быть использовано для выполнения пользовательской схемы проверки подлинности, а также для достижения высокого уровня производительности системы при использовании исключительно анонимной проверки подлинности.


Мало относится к теме.  smile smile 

Автор: Naum 10.1.2007, 16:33
А ты прочитай весь раздел. Там есть и про авторизацию через Windows и по паспорту и с помощью Web Forms.

З.Ы. Согласен Web Service и Web приложение разные вещи. Но все таки...

Автор: gfmail 10.1.2007, 16:39
Цитата

А ты прочитай весь раздел. Там есть и про авторизацию через Windows и по паспорту и с помощью Web Forms.

З.Ы. Согласен Web Service и Web приложение разные вещи. Но все таки...




Да там только общие фразы, и всё. 

Автор: Budda 10.1.2007, 23:10
Цитата(gfmail @  9.1.2007,  18:40 Найти цитируемый пост)
Если бы ещё и ссылку по теме, то было бы вообще чудесно

какая ссылка? smile все по опыту... пишу как бы делал сам...

MSDN ссылка, конечно, хорошая, но в тоже время бесполезная. Туда без какого-то опыта не стоит лезть... дебри...

Добавлено @ 23:11 
Но чего тебе не хватает из моего поста? бери и по пунктику всё делай. Как я понимаю, оно тебе не горит, для себя делаешь, опыта набираешься... вот и набирайся постепенно.

Автор: gfmail 11.1.2007, 09:05
А как восстановить/сформировать идентификатор, есть для этого стандартные средства?

Автор: Budda 11.1.2007, 10:39
Наверное, вручную самому это делать не нужно, по идее должен быть класс, содержащий в названии слово Session. Ты для юзера создаёшь сессию (объект), и он должен содержать кучу разных данных, в т.ч. и поддерживать возможность пихать в него свои данные. Кроме того, у этого объекта должно быть поле(член-переменная) Id.

Автор: megatron 11.1.2007, 14:21
Budda, В переменную session пихать ничего не надо, на форме авторизации считываешь из БД Id юзера и передаешь ее на след. форму через session. 

Автор: Budda 11.1.2007, 14:42
А если для юзера нужно хранить пару параметров, типа "автологин", может ещё что-то... пихать в их БД?

Автор: megatron 11.1.2007, 14:49
Budda, Если автологин, то нет, обычно это кукисами делается. Вообще не вижу смысла пихать автологин в сессию. 
Цитата(Budda @  11.1.2007,  14:42 Найти цитируемый пост)
может ещё что-то
 что еще например?

Автор: gfmail 15.1.2007, 10:52
Что ещё за session?
И что, при каждом вызове WebMethod-а передавать ид юзера(дополнительный параметр у метода "добавить сообщение и т.д.)? 
WebService как-то хранит подключенных пользователей?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)