Skip to content

Instantly share code, notes, and snippets.

@shigemur
Last active Aug 29, 2015
Embed
What would you like to do?
ColdFusionのログイン処理に Capyパズル認証を組み合わせたサンプルです。
<cfprocessingdirective pageencoding="utf-8" />
<cfscript>
//Capy設定: 認証先URL
capyURL = "https://www.capy.me/puzzle/verify"; //パズルCAPTCHA用URL
//capyURL = "https://jp.api.capy.me/gimpy/verify"; //テキストCAPTCHA用URL
//Capy設定: プライベートキー
capyPrivatekey = "Capyサイトから取得したプライベートキーを入力します";
//Capy Captcha JavaScriptスクリプトのコード
capyJS = 'Capyサイトから取得したCAPTCHAのJavaScriptコード(<script~)をコピーしてください';
</cfscript>
<!--- 入力フォーム ブロック --->
<cfsavecontent variable="cflogin_form">
<cfform>
ユーザーID:<cfinput type="text" name="j_username" required="true" message="ユーザーIDを入力してください"><br>
パスワード:<cfinput type="password" name="j_password" ><br>
<cfoutput>#capyJS#</cfoutput>
<cfinput type="submit" name="login" value="認証!"/>
</cfform>
</cfsavecontent>
<!--- ログイン認証処理 --->
<cflogin>
<cfif not IsDefined("cflogin")>
<h3>ログイン情報とパズル操作を行ってください</h3>
<cfoutput>#cflogin_form#</cfoutput>
<cfelse>
<!--- ここにcflogin.name, cflogin.password によるユーザー認証処理を実施し、OKだったら次のCapy認証を行う --->
<!--- Capy認証処理 --->
<cfhttp method="Post" url="#capyURL#" result="httpResult">
<cfhttpparam type="Formfield" value="#Form.capy_challengekey#" name="capy_challengekey">
<cfhttpparam type="Formfield" value="#Form.capy_answer#" name="capy_answer">
<cfhttpparam type="Formfield" value="#capyPrivatekey#" name="capy_privatekey">
<cfhttpparam type="Formfield" value="#Cgi.remoteAddr#" name="capy_ip_address">
</cfhttp>
<!--- 応答チェック戻り値の一行目が true だったら認証成功) --->
<cfif ListFirst(httpResult.Filecontent,"#Chr(13)##Chr(10)#")>
<cfloginuser name="#cflogin.name#" password="#cflogin.password#" roles="user" >
<cfelse>
<h3> ログイン認証に失敗しました。再度情報入力とパズル操作を行ってください</h3>
<cfoutput>#cflogin_form#</cfoutput>
</cfif>
</cfif>
</cflogin>
<cfoutput>#iif(GetAuthUser() Is Not "", De("ログイン済"), De("未ログイン"))#</cfoutput>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment