Руководство по добавлению CAPTCHA и KickIt! в Community Server
Наш сайт работает на движке 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/
Добавление CAPTCHA на форму для комментариев
1. Необходимо разрешить анонимные комментарии (сделать это может либо администратор либо автор блога). Как это сделать, читать здесь.
2. В файл default.browser в секцию controlAdapters необходимо добавить код:
<adapter controlType="CommunityServer.Blogs.Controls.WeblogPostCommentForm" adapterType="CodeBetter.CommunityServerExtensions.CaptchaControlAdapter, CodeBetter.CommunityServerExtensions" />
3. Во всех темах для блогов необходимо проверить, чтобы секция WeblogPostCommentForm содержала свойство ValidationGroup, установленное в CreateCommentForm (Themes/Blogs/
<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. Тут еще не совсем разобрался, поэтому допишу позже [:)]
Ссылки
- CAPTCHA for Community Server 2007
- Community Server Ad-Ons -> CodeBetter.CommunityServerExtensions
- CodeBetter.CommunityServerExtensions
- KickIt For CommunityServer 2007
P.S. Теперь можно оставлять комментарии анонимно у нас на сайте. Если вы заметите некорректное поведение капчи, просьба сообщить мне об этом.