我正在开发一个系统,用户是客户帐户的成员。有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的广告系列。
但是我怎样才能使它安全,即作为另一个客户的成员的用户无法查看该广告系列?他们只需更改网址并查看与其他客户相关的广告系列......
由于
答案 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
}
}