説明

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

カテゴリ

セキュリティタグ

シンタックス

<cflogin 
applicationToken = "token" 
cookieDomain = "domain" 
idletimeout = "value"
allowconcurrent = "true|false"
usebasicauth = "true|false"> 
... 
<cfloginuser 
name = "name" 
password = "password" 
roles = "roles"> 
</cflogin>

関連項目

cfloginusercflogoutGetAuthUserGetUserRolesIsUserInAnyRoleIsUserInRoleIsUserLoggedIn、『アプリケーションの開発』の「アプリケーションの保護

履歴

ColdFusion 11:allowconcurrent と usebasicauth という 2 つの新しい属性が追加されました。

ColdFusion 8:applicationtoken 属性を使用して、アプリケーションごとに固有のアプリケーション ID を指定したり、複数のアプリケーションに対して同じ値を指定したりできます。ColdFusion MX 6.1:動作が変更されました。ColdFusion が NTLM 認証情報またはダイジェスト(HTTP Negotiated ヘッダー)認証情報を含むリクエストを受け取るときは、cflogin 変数が存在します。ColdFusion MX:このタグが追加されました。

属性

属性

必須/オプション

デフォルト

説明

applicationtoken

オプション

現在のアプリケーション名

アプリケーションに適用するログインです。ユーザーが 1 つのアプリケーションのみにログインできるようにするには、そのアプリケーションの固有の値を指定します。ユーザーが複数のアプリケーションにログインできるようにするには、それらのアプリケーションに同じ値を指定します。applicationtoken 属性の値を設定しない場合、デフォルト値は CFAUTHORIZATION_applicationname です。

cookiedomain

オプション

 

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

idletimeout

オプション

1800

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

allowconcurrent オプション true

同時ログインセッションを許可する必要があるときに使用します。

usebasicauth オプション true

ログインの検証に BASIC 認証を使用する必要があるときに使用します。

使用方法

このタグの本文は、ログインしているユーザーがいない場合にのみ実行されます。アプリケーションベースのセキュリティを使用する場合は、cflogin タグの本文に、ユーザーが指定した ID とパスワードをログイン ID のデータソース、LDAP ディレクトリ、またはその他のレポジトリと対照して確認するためのコードを挿入します。タグ本文には cfloginuser タグを指定して、認証済みユーザーを ColdFusion に識別させる必要があります。
ユーザーはデータソースを制御し、cflogin タグ内の SQL のコーディングを担当します。また、関連付けられたデータベースにユーザー、パスワード、およびロールに関する情報があるようにしなければなりません。
cflogin タグは、そのページが次のいずれかに対するレスポンスとして実行されている場合には、cflogin.name と cflogin.password という 2 つの変数から成るビルトインの cflogin 構造体を含んでいます。

  • j_username および j_password という名前の入力フィールドを含むフォームの送信。
  • HTTP 基本認証を使用し、ユーザー名とパスワードが入っている認証ヘッダを含むリクエスト。
  • NTLM または Digest 認証を使用するリクエスト。この場合、ユーザー名とパスワードは 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"> 
SELECT Roles FROM 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>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー