説明
ユーザーログインと認証コードのためのコンテナです。ユーザーがまだログインしていない場合に、このタグ内のコードが実行されます。このタグ内には、ユーザーを認証し、そのユーザーのロールを識別するためのコードを記述します。cfloginuser タグと共に使用します。
カテゴリ
シンタックス
<cflogin applicationToken = "token" cookieDomain = "domain" idletimeout = "value" allowconcurrent = "true|false" usebasicauth = "true|false"> ... <cfloginuser name = "name" password = "password" roles = "roles"> </cflogin>
関連項目
cfloginuser、cflogout、GetAuthUser、GetUserRoles、IsUserInAnyRole、IsUserInRole、IsUserLoggedIn、『アプリケーションの開発』の「アプリケーションの保護」
履歴
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>