如果客户未从网站上的任何页面登录,我想将客户重定向到登录页面。我正在尝试将对子域的访问权限限制为特定客户组,其余代码可以正常工作。
如果我在home.tpl上使用以下代码,则可以使用
if (!$logged) {
$this->redirect($this->url->link('account/login', '', 'SSL'));
}
但如果我把它放在标题中(因此它会对每个页面做出反应),我会得到一个重定向循环,因为它会尝试将实际的登录页面重定向到自身。
有没有办法正确说出:
if ($this->url->link != 'account/login') {
$this->redirect($this->url->link('account/login', '', 'SSL'));
}
提前感谢您的帮助。
马特
答案 0 :(得分:1)
假设您要检查商店是否也是子域名,您应该使用类似这样的代码
// Check store ID against subdomain store id value
if($this->config->get('config_store_id') == 123) {
// Check customer isn't logged in
if(!$this->customer->isLogged()) {
// Redirect if route isn't account/login
if(empty($this->request->get['route']) || $this->request->get['route'] != 'account/login') {
$this->redirect($this->url->link('account/login', '', 'SSL'));
}
}
}
答案 1 :(得分:1)
另一种可能性是创建 preAction - 例如喜欢维护模式。我曾经使用过这个,我认为这比在视图模板中实现它更清晰(因此它遵循MVC模式 - 逻辑在控制器中完成,视图仅用于呈现数据和收集来自用户的输入)。
创建课程catalog/controller/common/login.php
class ControllerCommonLogin extends Controller {
public function index() {
if($this->config->get('config_store_id') == 1) { // if desired store, continue checking
if(!$this->customer->isLogged()) { // Check user isn't logged in
if(empty($this->request->get['route']) || $this->request->get['route'] != 'account/login') { // Redirect if route isn't account/login
$this->redirect($this->url->link('account/login', '', 'SSL'));
}
}
}
}
}
然后打开index.php
(前端一个)并找到行:
// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance'));
和 后添加:
// Login needed pre-action
$controller->addPreAction(new Action('common/login'));
你应该完成。
答案 2 :(得分:0)
您需要添加以下条件:
if($this->config->get('config_store_id') == 1) { //Add your subdomain store id, if you want to limit the condition for a subdomain.
if( (!isset($this->request->get['route']) || $this->request->get['route'] != 'account/login' ) && (!$this->customer->isLogged()) ){
$this->redirect($this->url->link('account/login', '', 'SSL'));
}
}
$this->request->get['route']
- 这将为您提供当前页面路径。
答案 3 :(得分:0)
我建议您检查一下您是否已经登录页面,如果不是,请不要运行代码。如果你在一个名为login.php的页面上,你可以检查一下。简单而干净的解决方案