kohana简单权限控制

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

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

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

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

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


Php代码   收藏代码
  1. class Controller_Susan extends Controller {    
  2.     
  3.     public function before()    
  4.     {    
  5.         $this->is_login();    
  6.     }    
  7.     
  8.     public function is_login()    
  9.     {    
  10.         $session = Session::instance();    
  11.         if ( ! $session->get( 'is_login' ) )    
  12.         {    
  13.             $this->request->redirect( 'login' );    
  14.         }    
  15.     }    
  16.     
  17. }    

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


Java代码   收藏代码
  1. class Controller_Memo extends Controller_Susan {    
  2.     
  3.     public function before()    
  4.     {    
  5.         parent::before();    
  6.     }    
  7.     
  8.     public function action_index()    
  9.     {    
  10.         echo 'Hello, you can <a href="/login/do">Log out</a> now !';    
  11.     }    
  12.     
  13. }    

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


Java代码   收藏代码
  1. class Controller_Login extends Controller {    
  2.     
  3.     public function action_index()    
  4.     {    
  5.         $session = Session::instance();    
  6.     
  7.         if($session->get('is_login'false) == 1)    
  8.         {    
  9.             $this->request->redirect('');    
  10.         }    
  11.     
  12.         echo '<a href="/login/do">Login</a>';    
  13.     }    
  14.     
  15.     public function action_do()    
  16.     {    
  17.         $session = Session::instance();    
  18.     
  19.         if($session->get('is_login'false) == 1)    
  20.         {    
  21.             $session->destroy();    
  22.     
  23.             $this->request->redirect('login');    
  24.         }    
  25.         else    
  26.         {    
  27.             $session->set('is_login', TRUE);    
  28.     
  29.             $this->request->redirect('');    
  30.         }    
  31.     }    
  32. }    

这样,一个简单的权限控制就做好了。
分享到:

转载于:https://www.cnblogs.com/friday295/archive/2012/07/19/2598838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值