Kohana 控制器继承使用技巧一则

本文介绍如何使用Kohana框架实现简单的用户权限控制。通过创建继承自Kohana控制器的基本控制器Susan,可以统一处理用户登录验证,避免重复代码。进一步,具体页面控制器如Memo继承自Susan,自动获得登录验证功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kohana 控制器继承使用技巧一则

在需要对用户进行验证的网站中,我们需要对每一个需要权限验证的页面进行判断,这在 Kohana 中很容易就可以做到。

利用 Kohana 的控制器继承,我们可以很方便对页面的访问权限进行控制,以下就是一个简单的例子。

假设我们有一个页面 A,用户访问页面 A 必须进行登录。

首先,我们构造一个基本控制器 Susan,这个控制器继承于 Kohana 的 Controller,它的作用是对通过该控制器的请求做出分析,判断该请求是否有效:


class Controller_Susan extends Controller {  

public function before()
{
$this->is_login();
}

public function is_login()
{
$session = Session::instance();
if ( ! $session->get( 'is_login' ) )
{
$this->request->redirect( 'login' );
}
}

}

下面我们来构造页面 A 的控制器 Memo,这个控制器继承刚才我们创建的控制器 Susan:


class Controller_Memo extends Controller_Susan {  

public function before()
{
parent::before();
}

public function action_index()
{
echo 'Hello, you can <a href="/login/do">Log out</a> now !';
}

}

接下来就是登录控制器 Login,由于这个控制器不需要对用户是否登录做出判断,所以我们把它继承 Kohan 的 Controller,而不是 Susan:


class Controller_Login extends Controller {  

public function action_index()
{
$session = Session::instance();

if($session->get('is_login', false) == 1)
{
$this->request->redirect('');
}

echo '<a href="/login/do">Login</a>';
}

public function action_do()
{
$session = Session::instance();

if($session->get('is_login', false) == 1)
{
$session->destroy();

$this->request->redirect('login');
}
else
{
$session->set('is_login', TRUE);

$this->request->redirect('');
}
}
}

这样,一个简单的权限控制就做好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值