Доступ к странице, если пользователь не вошел в систему? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть логин в моем новом приложении, которое проверяет каждый запрос на вход пользователя в систему. Если пользователь не вошел в систему автоматически, он будет перенаправлен на страницу входа.У меня есть ситуация, когда пользователь нажимает на Forgot Password.В этом случае я сгенерировал временную ссылку, которая направит пользователя на страницу reset.cfm.Однако проблема в том, что пользователь не вошел в систему, и если я попытаюсь нажать на ссылку, которая должна направить меня на reset.cfm, мой код направит меня на login.cfm.Вот логика, которую я использую в Application.cfc:

public boolean function onRequestStart(required string thePage) output="false" {
    local.page = listLast(arguments.thePage,"/");
    //onApplicationStart();

    if(!listFindNoCase("Login.cfm,Authentication.cfc",page)){
        if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
           location(url="https://example.com", addToken="false");
        }
    }

    return true;
}

. Как видно из приведенного выше примера, при каждом запросе я проверяю флаг loggedin.Мне интересно, как я могу дать пользователю доступ к Reset.cfm?token=94129873129 ссылке на страницу?Я хотел бы, чтобы моя логика работала одинаково для пользователей, которые не вошли в систему. В то же время мне нужно предоставить им доступ к Reset.cfm.Если у кого-то есть предложения о том, как этого можно достичь или лучший способ справиться с этим, пожалуйста, дайте мне знать.Одним из решений, о котором я думал, было это решение в Main.cfm:

<cfif structKeyExists(url,"token")>
    <cfinclude template="Reset.cfm">
<cfelse>
    <cfinclude template="Login.cfm">
</cfif>

Если параметр url token существует, тогда направьте пользователя на Reset.cfm, если не на Login.cfm.

1 Ответ

0 голосов
/ 19 сентября 2018

Здравствуйте, вы можете написать условия как ниже, Пожалуйста, добавьте концепцию whiteList.В этот список вы можете добавить список файлов (к какому файлу вы можете получить доступ без входа в систему. Здесь я привел пример reset.cfm и register.cfm для обоих файлов, к которым мы можем получить доступ без входа в систему). Затем наложите на них условие, как показано ниже.

public any function onRequestStart(required string thePage) output="false" {
        local.page = listLast(CGI.SCRIPT_NAME,"/");
        local.whiteList = ['reset.cfm','register.cfm']; // Here you can add what are pages you want to access without login.

        if( local.page NEQ 'login.cfm' AND !StructKeyExists( session, "loggedin" ) && !arrayFindNoCase(local.whiteList,local.page ) ) {
            location( url="login.cfm", addtoken='false' );
        }

    }

Надеюсь, это поможет вам.Пожалуйста, дайте мне знать ваши мысли по этому поводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...