如果用户未登录,请访问该页面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果用户未登录,请访问该页面?相关的知识,希望对你有一定的参考价值。
我已登录我的新应用程序,如果用户已登录则检查每个请求。如果用户未自动登录,将被重定向到登录页面。我有用户点击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
。
答案
你好你可以写下面的条件,请添加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' );
}
}
我希望它对你有所帮助。请让我知道你对这些的看法。
以上是关于如果用户未登录,请访问该页面?的主要内容,如果未能解决你的问题,请参考以下文章