CFLOGIN  
説明

ユーザーログインと認証コードのためのコンテナです。ユーザーがまだログインしていない場合に、このタグ内のコードが実行されます。このタグ内には、ユーザーを認証し、そのユーザーのロールを識別するためのコードを記述します。cfloginuser タグと共に使用します。

 
カテゴリ

セキュリティタグ

 
シンタックス
<cflogin
   idletimeout = "value"
   applicationToken = "token"
   cookieDomain = "domain"
   ...
   <cfloginuser 
      name = "name"
      password = "password-string"
      roles = "roles">
   ...>
</cflogin>
 
関連項目

cfloginuser、cflogout、GetAuthUser、IsUserInRole、『ColdFusion MX 開発ガイド』の第16章の「アプリケーションの保護」

 
ヒストリ

ColdFusion MX 6.1: 動作が変更されました。ColdFusion が NTLM 認証情報またはダイジェスト (CFHTTP Negotiated ヘッダ) 認証情報を含むリクエストを受け取るときは、cflogin 変数が存在します。

ColdFusion MX: このタグが追加されました。

 
使用方法

このタグの本文は、ログインしているユーザーがいない場合にのみ実行されます。アプリケーションベースのセキュリティを使用する場合は、cflogin タグの本文に、ユーザーが指定した ID とパスワードをログイン ID のデータソース、LDAP ディレクトリ、またはその他のレポジトリと対照して確認するためのコードを挿入します。タグ本文には cfloginuser タグを指定して、認証済みユーザーを ColdFusion に識別させる必要があります。

ユーザーはデータソースを制御し、cflogin タグ内の SQL のコーディングを担当します。また、関連付けられたデータベースにユーザー、パスワード、およびロールに関する情報があるようにしなければなりません。

cflogin タグは、そのページが次のいずれかに対するレスポンスとして実行されている場合には、cflogin.name と cflogin.password という 2 つの変数から成るビルトインの cflogin 構造体を含んでいます。

  • j_username および j_password という名前の入力フィールドを含むフォームの送信。
  • CFHTTP 基本認証を使用し、ユーザー名とパスワードが入っている認証ヘッダを含むリクエスト。
  • NTLM またはダイジェスト認証を使用するリクエスト。この場合、ユーザー名とパスワードは Authorization ヘッダの一方向アルゴリズムでハッシュされます。ColdFusion は Web サーバーからユーザー名を取得し、cflogin.password 値に空の文字列を設定します。

これらの値は、cflogin タグの本文内でユーザーを認証するために使用され、さらに cfloginuser タグ内でユーザーをログインさせるために使用されます。この構造体は cflogin タグ本文内でのみ使用できます。

 

次の例は、簡単な認証を示しています。このコードは、通常は Application.cfc の onRequestStart メソッドまたは application.cfm ページに置かれます。

<cflogin>
   <cfif NOT IsDefined("cflogin")>
      <cfinclude template="loginform.cfm">
      <cfabort>
   <cfelse>
      <cfif cflogin.name eq "admin">
         <cfset roles = "user,admin">
      <cfelse>
            <cfset roles = "user">
      </cfif>
      <cfloginuser name = "#cflogin.name#" password = "#cflogin.password#"
         roles = "#roles#" />
   </cfif>
</cflogin>

次の参照専用の例では、ユーザー ID とパスワードをデータソースと対照して確認します。

<cfquery name="qSecurity"
   datasource="UserRolesDb">
   SecurityRoles からロールを選択
   where username=<cfqueryparam value="#cflogin.name#"
      CFSQLTYPE="CF_SQL_VARCHAR"
   and password=<cfqueryparam value="#cflogin.password#"
      CFSQLTYPE="CF_SQL_VARCHAR"
</cfquery>

<cfif qSecurity.recordcount gt 0>
<cfloginuser name = "#cflogin.name#"
password = "#cflogin.password#"
roles = "#trim(qSecurity.Roles)#" >
</cfif>
IDLETIMEOUT  
  オプション
 
Default value: "1800"

ColdFusion がユーザーをログオフさせることになるまでの待機時間 (秒単位) です。

APPLICATIONTOKEN  
  オプション
 
Default value: "現在のアプリケーション名"

固有のアプリケーション ID を指定します。cfapplication タグまたは "Application.cfc" ファイルでの指定どおりに、ログインの有効性を 1 つのアプリケーションに制限します。

COOKIEDOMAIN  
  オプション
 

ユーザーがログインしていることを示すために使われる Cookie のドメインです。この属性を使うことで、ユーザーのログイン Cookie を同じドメイン内の複数のクラスタサーバーで使用できるようにします。