The following sections provide two detailed security scenarios. The first scenario uses the web server to perform the authentication against its user and password database. The second scenario uses ColdFusion for all authentication and authorization.
An application that uses web server authentication might work as follows. The example in Web server-based authentication user security example implements this scenario.
onRequestStart method. If you use an Application.cfm page in place of the Application.cfc, it runs the contents of the Application.cfm page before it runs the requested page. The onRequestStart method or Application.cfm page contains a cflogin tag. ColdFusion executes the cflogin tag body if the user is not logged into ColdFusion. The user is logged in if the cfloginuser tag has run successfully for this application and the user has not been logged out.
cflogin tag body uses the user ID and password from the browser login, contained in the cflogin.name and cflogin.password variables, as follows. (With Digest or NTLM web server authentication, the cflogin.password variable is the empty string.)
cfloginuser tag with the user's ID, password, and roles, to identify the user to ColdFusion.IsUserInRole function to check whether the user belongs to a role before it runs protected code that must be available only to users in that role. 
GetAuthUser function to determine the user ID; for example, to display the ID for personalization. It can also use the ID as a database key to get user-specific data.
Caution: If you use web server-based authentication or any form authentication that uses a Basic HTTP Authorization header, the browser continues to send the authentication information to your application until the user closes the browser, or in some cases, all open browser windows. As a result, after the user logs out and your application uses the cflogout tag, until the browser closes, the cflogin structure in the cflogin tag will contain the logged-out user's UserID and password. If a user logs out and does not close the browser, another user might access pages with the first user's login.
An application that does its own authentication might work as follows. The example in Application-based user security example implements this scenario.
onRequestStart method. If you use an Application.cfm page in place of Application.cfc, ColdFusion runs the contents of the Application.cfm page before it runs the requested page. The onRequestStart method or Application.cfm page contains the cflogin tag. ColdFusion executes the cflogin tag body if the user is not logged in. A user is logged in if the cfloginuser tag has run during the current session and the user had not been logged out by a cflogout tag.
cflogin tag body checks to see if it has received a user ID and password, normally from a login form. 
cflogin tag body displays a login form that asks for the user's ID and password. 
The form posts the login information back to the originally requested page, and the cflogin tag in the onRequestStart method or the Application.cfm page runs again. This time, the cflogin tag body code checks the user name and password against a database, LDAP directory, or other policy store, to ensure that the user is valid and get the user's roles.
cflogin tag body code calls the cfloginuser tag with the user's ID, password, and roles, to identify the user to ColdFusion.
IsUserInRole function to check whether the user belongs to a role before they run protected code that must be available only to users in that role. 
The application can use the GetAuthUser function to determine the user ID; for example, to display the ID for personalization. It can also use the ID as a database key to get user-specific data.
cflogout tag to log out the user. Typically, the logout link is in a page header that appears in all pages. The logout form can also be in the Application.cfc (for example, in the onRequestStart or onRequestEnd method) or on the Application.cfm page.
Although this scenario shows one method for implementing user security, it is only an example. For example, your application could require users to log in for only some pages, such as pages in a folder that contains administrative functions. When you design your user security implementation, remember the following:
cflogin tag body executes only if there is no user logged in. 
cfloginuser tag to log the user into ColdFusion. 
The following figure shows this flow of control. For simplicity, it omits the log-out option.