我想限制对已登录的用户访问资源(pdf,doc,docx等)文件。
资源位于/ var / www / html / media / wysiwyg /...
因此,如果有人试图访问URL http://domain/media/wysiwyg/sales.pdf
,我想将它们重定向到登录页面,如果他们没有登录。
我计划使用.htaccess重写并通过.php程序将所有访问尝试包装到受限文件中,该程序将检查用户是否已登录 - 但我不确定如何检查用户是否已登录状态。
我试过了:
require_once 'app/Mage.php';
Mage::app('', '');
//GET SESSION DATA
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
if($session->isLoggedIn()){
// send data
}
else
{
// redirect to login page
}
但isLoggedIn()始终为false。
任何建议都将不胜感激。
答案 0 :(得分:0)
这取决于您的规格,但我想知道为什么要从媒体目录中处理此问题,而您已经拥有downloadable product选项
我想你的所有需求,如果有你需要的东西没有实现,请随意扩展并编写自己的
如果你想更新你的问题,请更新它,我很乐意帮助:)
答案 1 :(得分:0)
试试这个:
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');
umask(0);
Mage::app();
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
// send data
}
else {
// redirect
}
答案 2 :(得分:0)
可下载的产品选项不太符合我们的需求 - 我们有许多资源页面需要更新,新文件会上传到媒体文件夹。
在进行更多研究时,我想出了如何测试是否有登录用户:
require_once 'app/Mage.php';
Mage::app();
$coreSession = Mage::getSingleton('core/session', array('name' => 'frontend'));
if(isset($coreSession['visitor_data']['customer_id'])){
// there is a customer id, so someone is logged in
// send the file
}
else
{
// redirect to login page, or a page that explains why the link doesn't work
}
如果您想获取有关登录用户的信息,您必须首先实际使用loginById方法:
if(isset($coreSession['visitor_data']['customer_id'])){
$customerId = $coreSession['visitor_data']['customer_id'];
// Load the user session.
Mage::getSingleton('customer/session')->loginById($customerId);
$customerSession = Mage::getSingleton("customer/session");
// Load customer
$customer = $customerSession->getCustomer();
}
当您搜索如何验证客户是否已登录时,会显示许多解决方案,显示$ customerSession的isLoggedIn()方法的使用,但如果您没有&#39;登录&#39;使用cusotmerId和loginById方法,isLoggedIn方法将始终返回false。