2014-03-29 34 views
0

我有一個傳統的Rails 4應用程序,具有User模型和Sorcery進行身份驗證。用戶模型具有「管理員」標誌。實現管理員臨時成爲另一個用戶的能力的最佳方式是什麼(爲了查看用戶看到的用於幫助調試問題的內容),然後回到他們原來的管理員啓用用戶身上?如何實現管理員暫時成爲另一個用戶?

回答

0

我不瞭解rails,但是在Unix下,您的可執行文件需要被允許在用戶模式之間切換。這是通過在可執行文件上設置's'位來完成的,並將所有者和/或組設置爲執行您希望應用程序能夠執行的任何操作。 (即大多數情況下,您使用root作爲所有者,srwxr-xr-x作爲權限,即4755作爲模式編號)。

一旦你有了,你的應用程序可以使用函數setuid(<uid>)。如果使用root,則<uid>將爲0(零)。

在Linux下,您還有seteuid(),setfsuid()setreuid()

爲了確保您做得正確,我建議您閱讀相應的手冊頁。

+0

什麼,我很抱歉,如果我沒有明確這一點,但我不是在談論UNIX系統用戶。我正在談論網站上的用戶,每個用戶在關係數據庫的「用戶」表中都有記錄。 – odigity

+0

啊!然後,我想我不能幫助。如果沒有更好的瞭解系統如何記錄用戶的信息......您將無法做到這一點。在我正在處理的CMS中,代碼可以隨時讀取數據庫中的任何可用內容。但是,我可以調用一個函數來測試任何給定用戶(默認情況下,當前用戶)是否有權查看/修改/刪除該數據。 –

0

我沒有這方面的經驗,但也許你可以添加一個超級用戶標誌到你的用戶模型。如果你是超級用戶,你可以調整管理標誌。超級用戶唯一的一點就是能夠關閉或打開管理權限。現在,您可以在用戶或管理員之間切換,並查看用戶看到的內容。完成後,您啓用管理員,並重新獲得管理界面。

這將工作,但我不知道它是否是您的用例的最佳解決方案。只是在這裏理論創造。 :)

+0

這將允許您將事情看作* a *用戶,而不是特定的用戶。我想成爲一個特定的用戶,就好像我以他們的身份登錄一樣。這很容易實現。面臨的挑戰是如何回到原來的身份 - 讓系統記住您是管理員,並允許您恢復該狀態。 – odigity

+0

在Linux上認爲相當於「su 」。 – odigity

相關問題