Codeigniter根据用户帐户保护某些页面

时间:2014-02-25 12:33:47

标签: codeigniter

我正在开发一个系统,用户是客户帐户的成员。有5或6个客户端,每个客户端都有许多用户。当用户登录时,该站点将被设置为他们所属的客户端。

我有一个功能“view_campaign”:

function view_campaign($campaignID = FALSE){
    $this->load->model('client_model');
    $this->load->model('campaign_model');

    $data['main_content'] = 'campaign_overview';

    $this->load->view('includes/template', $data);

}

因此,在URL中我们有... / campaign / view_campaign / 21(例如)。这意味着用户可以访问ID为21的广告系列。

但是我怎样才能使它安全,即作为另一个客户的成员的用户无法查看该广告系列?他们只需更改网址并查看与其他客户相关的广告系列......

由于

1 个答案:

答案 0 :(得分:0)

相当广泛的问题,我不确定你的数据库结构是什么,但是你想做类似......

当用户首次登录时,您希望在会话中保存其用户ID及其客户端ID。然后,您希望在广告系列模型中拥有一个功能,该功能可获取广告系列所属的客户ID。

您的view_campaign功能看起来像

function view_campaign($campaignID = FALSE) {
    $this->load->model('client_model');
    $this->load->model('campaign_model');

    //Get the user ID and client ID from a session or something
    $userId = $this->session->userdata('userId');
    $clientId = $this->session->userdata('clientId');

    //Call a function in your model to see if the user belongs to the client
    $campaignClientId = $this->campaign_model->getClient($campaignID )

    //If the client ID the campaign belongs to matches the client ID the user
    //belongs to then they can view it
    if($campaignClientId === $clientId ) {
        $data['main_content'] = 'campaign_overview';
        $this->load->view('includes/template', $data);
    } else {
        //Redirect to another page
    }
}