Доступ к странице, если пользователь не вошел в систему?
У меня есть логин в моем новом приложении, которое проверяет каждый запрос на вход пользователя в систему. Если пользователь не вошел в систему, он будет автоматически перенаправлен на страницу входа. У меня есть ситуация, когда пользователь нажимает на 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 ответ
Здравствуйте, вы можете написать условия, как показано ниже. Пожалуйста, добавьте концепцию белого списка. В этот список вы можете добавить список файлов (к какому файлу вы можете получить доступ без входа в систему. Здесь я привел пример 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' );
}
}
Я надеюсь, что это будет полезно для вас. Пожалуйста, дайте мне знать ваши мысли по этому поводу.