Руководство по добавлению CAPTCHA и KickIt! в Community Server

воскресенье, 28 июня 2009, Александр Краковецкий

Наш сайт работает на движке Telligent Community Server, который является мощным средством для управления контентом. Но, как и все стандартное (не open source, но очень близко, так как каждый может получить скомпилированный проект), повержено атакам спамеров. Эти нехорошие люди обошли регистрацию с кучей обязательных полей, не говоря уже о постах в комментариях.

Ранее эта проблема решалась такими способами:

  • ручное модерирование / удаление комментариев;
  • запрет на анонимные комментарии.

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

Библиотека CodeBetter.CommunityServerExtensions.dll

Эта библиотека (в теории) находится здесь, но (по не понятным мне причинам) загрузить ее с сайта нельзя. Поэтому пришлось написать письмо Wely с просьбой выслать библиотеку (за что ему большое спасибо). Эта библиотека находится в присоединенном файле. И вообще, информацию по данному вопросу пришлось собирать по всему вебу [:)]

Добавление CAPTCHA на форму регистрации

Оригинальная инструкция по добавлению была взята все у того же Wely здесь:

1. Скопируйте CodeBetter.CommunityServerExtensions.dll в папку bin.

2. В web.config file найдите секцию httpHandlers и добавьте следующий код:

<add
path="captcha.ashx" verb="GET"
type="CodeBetter.CommunityServerExtensions.CaptchaImageHandler,
CodeBetter.CommunityServerExtensions"/>

3. В файле Default.browser в директории App_Browsers в секции controlAdapters добавьте следующий код:

<adapter controlType="CommunityServer.Controls.CreateUserForm"      
adapterType="CodeBetter.CommunityServerExtensions.CaptchaControlAdapter, 
CodeBetter.CommunityServerExtensions" /> 

В результате на форме регистрации должна появиться captcha:

Если captcha не работает, необходимо добавить ValidationGroup="CreateCommentForm" в секцию CSControl:CreateUserForm (/Themes//User/createuser.aspx), а также для всех валидаторов формы.

Добавление CAPTCHA на форму для комментариев

1. Необходимо разрешить анонимные комментарии (сделать это может либо администратор либо автор блога). Как это сделать, читать здесь.

2. В файл default.browser в секцию controlAdapters необходимо добавить код:

<adapter controlType="CommunityServer.Blogs.Controls.WeblogPostCommentForm" 
adapterType="CodeBetter.CommunityServerExtensions.CaptchaControlAdapter, 
CodeBetter.CommunityServerExtensions" />

3. Во всех темах для блогов необходимо проверить, чтобы секция WeblogPostCommentForm содержала свойство ValidationGroup, установленное в CreateCommentForm (Themes/Blogs//post.aspx):

<CSBlog:WeblogPostCommentForm runat="server"
                    MessageTextBoxId="tbComment" 
                    NameTextBoxId="tbName" 
                    RememberCheckboxId="chkRemember" 
                    SubjectTextBoxId="tbTitle" 
                    SubmitButtonId="btnSubmit" 
                    UrlTextBoxId="tbUrl" 
                    ControlIdsToHideFromRegisteredUsers="RememberWrapper"
                    ValidationGroup="CreateCommentForm" >

Мне пришлось добавить это свойство для корректной работы captcha (в противном случае она показывается, но не работает).

Получилось что-то похожее на это:

Добавление KickIt! в сообщения блогов

Это расширение позволяет интегрироваться с известным сайтом DotNetKicks.

Процедура добавления:

1. В файл communityserver.config в секцию CSModules необходимо добавить код:

<add name = "KickIt" type ="CodeBetter.CommunityServerExtensions.Modules.KickItModule, 
CodeBetter.CommunityServerExtensions" />

2. Тут еще не совсем разобрался, поэтому допишу позже [:)]

Ссылки

P.S. Теперь можно оставлять комментарии анонимно у нас на сайте. Если вы заметите некорректное поведение капчи, просьба сообщить мне об этом.


Ищите нас в интернетах!

Комментарии

Свежие вакансии