使用Kohana制作用户个人资料

时间:2011-05-21 21:10:28

标签: php kohana kohana-3 kohana-auth

我正在运行Kohana 3,并且很难理解Auth模块,或者即使它是我需要的。基本上我想创建一个基本的用户配置文件站点,具有基本的用户名/密码保护。

如何使用现有的控制器......

class Controller_Profile extends Controller
{
    function action_index( $user_id )
    {
        // User should already be authenticated by here I think
    }
}

...并将它们与某种身份验证系统一起使用

3 个答案:

答案 0 :(得分:6)

对于Kohana 3,您需要在before办理入住手续,而不是像JIStone建议的那样__construct

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

    // This automatically checks for an auto login cookie (thanks kemo).
    if ( ! Auth::instance()->logged_in())
    {
        // Redirect to a login page (or somewhere else).
        $this->request->redirect('');
    }
}

简单易懂。您可以将其放入控制器并让所有需要身份验证的控制器进行扩展。

答案 1 :(得分:1)

如果您要求用户注册控制器上的所有页面,您可以检查__construct()声明:

function __construct()
{
    //Check roles for Access!!!!
    parent::__construct();
    $this->load_user();
    if( ! $this->is_registered )
    {
        if(request::is_ajax())
            die('This ajax call cannot be completed due to permission issues.');
        // this will redirect from the login page back to this page
        $this->session->set('requested_url', url::current());
        url::redirect('user/login');
    }
}

这是我们使用的代码,但它是Kohana 2,而不是3,因此您需要根据自己的需要调整一下。

答案 2 :(得分:1)

我提供了一个指向Auth Module in Kohana 3

的安装和基本用法的简短演练的链接

一旦您的Auth进程正常工作,您可以通过在before()方法中检查登录用户和正确的身份验证角色来保护某些控制器,或者为需要此检查的所有控制器创建一个基本控制器。如果用户未登录,则将其重定向到登录页面,如果他们没有正确的访问级别(或角色),则可以向他们显示“拒绝访问”页面。