在我的 ColdFusion 页面上为经过身份验证/登录的用户包含特定 jQuery 函数的最佳方式是啥?

Posted

技术标签:

【中文标题】在我的 ColdFusion 页面上为经过身份验证/登录的用户包含特定 jQuery 函数的最佳方式是啥?【英文标题】:What is the best way to include specific jQuery functions to authenticated/logged-in users on my ColdFusion page?在我的 ColdFusion 页面上为经过身份验证/登录的用户包含特定 jQuery 函数的最佳方式是什么? 【发布时间】:2010-08-17 17:43:04 【问题描述】:

我有一个 ColdFusion 页面,我想为经过身份验证的用户包含一些管理级别的 jQuery 函数,但我不确定实现此目的的最佳实践是什么。目前,我的 document.ready 中有一个 cfif 语句,用于检查用户是否已登录(会话范围),如果是,则对包含附加代码的文件运行 cfinclude。

这是完成业务的最安全方式还是有更好的方式?

$(document).ready(function() 
<cfif #variable# IS "authenticated">
<cfinclude template="includes/theadminfunctions.js">
</cfif>
// a bunch of other code here...
);

【问题讨论】:

【参考方案1】:

我可能会用不同的方式包装它

<cfif variable IS "authenticated">
    <script src="includes/theadminfunctions.js.cfm"></script>
</cfif>
<script>
  $(document).ready(function()
    //other code goes here
  );
</script>

基本上这只是使用脚本包含来处理页面,因为它可能是纯 js。对我来说似乎在语义上更正确,除非您的包含目录不允许获取请求...

因此,我还将向您的 theadminfunctions.js 页面添加身份验证检查,方法是将其转换为 .js.cfm 页面。这样,没有人可以在未经身份验证的情况下获取您的功能并手动包含它们。还要确保锁定 js 函数调用的所有 API,以要求经过身份验证的用户。

【讨论】:

【参考方案2】:

好的,首先要指出cfif 实际上不在您的document.ready 函数中。就CF服务器而言,JS只是文本,与html或其他任何东西没有什么不同。

CFML 在服务器上运行并生成文本 (HTML/JS),然后通过 Internet 传递到 Web 服务器,然后用户的浏览器将文本解释为 HTML+JS。

CF 的一些功能可以通过隐藏一些来回来模糊那里的区别,但了解实际发生的情况很重要:您的 CFML 正在生成文本/代码,但不直接与该 javascript 交互。

但无论如何,回到主要问题......你这样做的方式还可以,但不一定是最好的方式。 JavaScript 应该位于单独的文件中,以便可以单独缓存/刷新页面。此外,根据您的 JS 可以包含的内容,您可能希望阻止对文件本身的访问。

由于您使用的是 CF 级别的登录检查,因此执行此操作的方法是为您的 JS 使用 CFM 文件并在文件顶部添加检查。

我可能会这样做:

<script type="text/javascript" src="includes/common.js"></script>
<cfif (logincheck) >
    <script type="text/javascript" src="includes/loggedin.js.cfm"></script>
</cfif>

那么在loggedin.cfm 里面你会得到:

<!--- Check again for authentication, and exit if not. --->
<cfif NOT (logincheck) >
    <cfabort/>
</cfif>

<!--- Tell the browser this is a JS file (default is HTML) --->
<cfcontent reset type="text/javascript"/>

// js admin functions...
$(document).ready(function()...);

<!--- Ensure debugging is always off to prevent the JS errors it would otherwise cause. --->
<cfsetting showdebugoutput="false" />
<!--- (you can consider a <cfabort/> here, depending on if you want onRequestEnd to run or not) --->

【讨论】:

以上是关于在我的 ColdFusion 页面上为经过身份验证/登录的用户包含特定 jQuery 函数的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Firebase上为cURL添加身份验证系统?

Symfony:事件订阅者。当路由要求用户必须经过身份验证时触发 404 页面(取决于 .env var)

在 Blazor 中的视图之外访问经过身份验证的用户

Django身份验证和Ajax - 需要登录的URL

Django 身份验证 - 错误的重定向 url 到登录页面

使用 Grafana API 进行自动身份验证