0

我正在建立一个网站(通过 MODx),我不希望“未登录”用户能够看到主页,而是被重定向到“正在建设”页面。

在我的片段中,这是我目前所拥有的:

<?php
if (! $modx->user->hasSessionContext($modx->context->get('key')) ) {
   $modx->sendRedirect('https://google.com');
} else {
    return '';
}

可悲的是,无论用户是否登录,这似乎都没有做任何事情。(这似乎是第二行的问题,当我测试它时实际重定向工作正常)我无法弄清楚什么是错了,非常感谢任何帮助!

页面中的片段是[[!notloggedin]]

4

2 回答 2

3

这些都在Bob 的指南中,但基本上你要做的是检查用户是否有 ID 或用户名,如果没有,他们没有登录。

您可能需要进行一些挖掘,看看是否可以在插件中实现重定向,而不是在可能是 onRequest 事件的片段中实现 - 所以在发现用户需要重定向之前,您不会呈现页面/资源。

There are various methods. One easy method is to use this code:
if ($modx->user->get('username') == '(anonymous)') {
    /* user is not logged in */
}    
Here is the official method for seeing if the user is logged in to the current context:

if ($modx->user->hasSessionContext($modx->context->get('key'))) {
    /* user is logged in */
}    
If you know the name of the current context (e.g., web), you can use this method. The name of the context is required:
if $modx->user->isAuthenticated('web') {
    /* user is logged in to web context */
} 
于 2013-08-27T14:32:20.933 回答
1

如果您的网站还没有准备好公开可用,MODX 已经允许这样做。

请参阅以下系统设置:

site_status
site_unavailable_message
site_unavailable_page

或者,只需将所有资源设置为“未发布”,自定义错误页面除外。登录的用户仍然可以查看所有资源。

于 2013-08-27T09:06:55.063 回答