Cakephp: ผู้ดูแลระบบเข้าสู่ระบบในฐานะผู้ใช้ onClick

ฉันกำลังมองหาวิธีที่ฉัน (เข้าสู่ระบบในฐานะผู้ดูแลระบบ) สามารถเข้าสู่ระบบในฐานะผู้ใช้เฉพาะ (ที่ฉันเลือกจากรายชื่อผู้ใช้ มีรายชื่ออยู่แล้ว) onclick โดยไม่รู้ว่าเป็นรหัสผ่านหรือไม่

ผู้ใช้ทุกคนมีรหัสผ่านที่แตกต่างกัน ดังนั้นรหัสผ่านที่เท่ากันจึงไม่ใช่ตัวเลือก

ตกลง ปิดคำถามแล้ว นี่คือวิธีแก้ปัญหา:

ป.ล. กลุ่มที่มีรหัส 2 คือกลุ่มผู้ดูแลระบบของฉัน

function loginasuser($user_id = null) {

    if (!$user_id) {
        $this->Session->setFlash(__('Invalid User.', true));
        $this->redirect(array('action'=>'index'));
    }
    $data = $this->Auth->user();

    if($data['User']['group_id'] == 2 || $_SESSION['Auth']['Admin']['id']==$user_id) {

    $user_data = $this->User->find('first', array('conditions' => array('User.id' => $user_id)));

    if ($user_data['User']['group_id']==2 && $user_data['User']['id']<>$_SESSION['Auth']['Admin']['id']) {
        $this->Session->setFlash(__('You can only log in as user', true));
        $this->redirect($this->Auth->redirect('/users'));
    }

        $_SESSION['Auth']['User']['id']=$user_data['User']['id'];
    $_SESSION['Auth']['User']['username']=$user_data['User']['username'];
    $_SESSION['Auth']['User']['group_id']=$user_data['User']['group_id'];
    $_SESSION['Auth']['User']['client_id']=$user_data['User']['client_id'];
    $_SESSION['Auth']['User']['created']=$user_data['User']['created'];
    $_SESSION['Auth']['User']['modified']=$user_data['User']['modified'];
    $_SESSION['Auth']['Admin']['id']=$data['User']['id'];

        if($_SESSION['Auth']['User']['group_id']==2) {
            $this->redirect($this->Auth->redirect('/ADMINHOME'));
        }
        else {
            $this->redirect($this->Auth->redirect('/USERSHOME'));
        }
    }
    else {
    $this->Session->setFlash(__('Only admins are alowed to do so!', true));
    $this->redirect(array('action'=>'index'));
    }

}

และหากต้องการกลับไปเป็นผู้ดูแลระบบ คุณสามารถทำได้:

<? if($_SESSION['Auth']['Admin']['id']>0) { ?>
<a href="/th/loginasuser/<?=$_SESSION['Auth']['Admin']['id'];?>">Go Back as Admin</a><? }

person Timur    schedule 27.06.2011    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้ "ชื่อผู้ใช้" (รหัสอีเมล) เพื่อสร้างเซสชัน

บน Onclick เรียกใช้การโทร Ajax ส่งชื่อผู้ใช้และตั้งค่าเซสชันโดยใช้ชื่อผู้ใช้นั้น (เพียงเรียกสายนี้เมื่อผู้ดูแลระบบเปลี่ยนกล่องการเลือก onChange(this.value))

จากนั้นเพียงเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าแรกของผู้ใช้ ใส่ลิงค์เพื่อกลับมาที่แดชบอร์ดผู้ดูแลระบบ ช่วยให้ผู้ดูแลระบบสามารถเข้าสู่ระบบในฐานะผู้ใช้รายอื่นได้

(ใช้เนมสเปซเซสชันที่แตกต่างกันสำหรับผู้ดูแลระบบและผู้ใช้ปลายทาง)

$_SESSION['user'] สำหรับผู้ใช้ปลายทางและ $_SESSIION['admin'] สำหรับผู้ใช้ที่เป็นผู้ดูแลระบบ

person Sahal    schedule 27.06.2011
comment
ขอบคุณครับ นั่นชี้ผมไปสู่ทิศทางที่ถูกต้อง ฉันจะโพสต์ฟังก์ชันทั้งหมดของฉันในกรณีที่มีคนต้องการมัน - person Timur; 27.06.2011