使用しているのは下記ブログポストで紹介されているライブラリ。
ASP.NET MVC CAPTCHA
※最新のソースコードは下記ブログポストらしいのだが、ダウンロードしたバイナリをMVC 3の環境に組み込んでも参照しているアセンブリバージョンの兼ね合いでコンパイルができないので、今回はMy Clip実装時の上記ブログポストのソースコードで実装方法を紹介する。
MVC CAPTCHA for Preview Release 3
- 上記のリンクからソースコードをダウンロードし、ManagedFusion.Web のプロジェクトをコンパイルする
- コンパイルしてできた ManagedFusion.dll と ManagedFusion.Web.dll を ASP.NET MVC 3 のプロジェクトで参照する
3, 下記を web.config に追加する
1 2 3 | <httpHandlers> <add verb= "GET" path= "captcha.ashx" validate= "false" type= "ManagedFusion.Web.Mvc.Handlers.CaptchaImageHandler, ManagedFusion.Web" /> </httpHandlers> |
4, 下記を Global.asax に追加する
1 2 3 4 | public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute( "{handler}.ashx" ); } |
5, cshtml に下記を追加する
1 2 3 4 5 6 | <div> @Html.Raw(Html.CaptchaImage(50, 180)) </div> <div> @Html.Raw(Html.CaptchaTextBox( "captcha" )) </div> |
6, コントローラーアクションに下記属性を追加する
1 2 3 4 5 6 | [CaptchaValidation( "captcha" )] [HttpPost] public ActionResult Register(RegisterModel model, bool captchaValid) { // Do something } |
以上で5でコードを追加した cshtml を表示するばキャプチャが表示されているはずだ。