如果用户未登录,请访问该页面?

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' );
        }

    }

我希望它对你有所帮助。请让我知道你对这些的看法。

以上是关于如果用户未登录,请访问该页面?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net如何让未登录用户登录后能自动跳转到登录前访问的页面?

如果未登录,如何制作过滤器以避免访问页面?

如果未登录,则重定向 html 页面

如果未登录,如何将用户重定向到登录页面

如何使用 VueJS 限制对未登录用户的页面访问?