Автологин в CFMBB

Родион Быков - 05/13/2009

Существует не так много систем для создания форума на Coldfusion. Одной из самых распространенных (и бесплатных) является CFMBB, которая сама по себе является переработкой Galleon Forums. Лишенная недостатков последней, CFMBB можно рекомендовать для любых целей.

Мне понадобилось добавить автологин в форум на одном сайте, защищенном Basic авторизацией. После запроса браузером пароля, форум просил пароль снова чтобы можно было постить в форум. Простое решение (должно работать как в CFMBB 1.23-24 так и в Galleon Forums 2.2.x) - добавить такой кусочек кода в Application.cfm гдето в районе строки 230:

<!--- try to auto-aunteficate user --->
<cfif not StructKeyExists(request, "isLoggedIn") or request.isLoggedIn neq "Yes">
    <cflogin>
        <cfif IsDefined("cflogin")>
            <cfparam name="form.username" default="" />
            <cfparam name="form.password" default="" />
            <cfif Len(form.username) eq 0 and Len(form.password) eq 0>
                <cfset form.username = cflogin.name />
                <cfset form.password = cflogin.password />
                
                <cfset authResults = application.user.authenticate(username=trim(form.username), password=trim(form.password), ip=cgi.remote_addr) />
   
                <cfif authResults.errorCode gt 0>
                    <cfset variables.loginError = authResults.errorMessage />
                </cfif>
            </cfif>
        </cfif>
    </cflogin>
</cfif>

Если в запросе приходит Basic-авторизация, внутри блока <cflogin> становится доступной структура cflogin. В ней содержатся логин и пароль, введенные пользователем. Этот логин и пароль используется для аутентификации пользователя внутри форума.