[英]cakephp rest api and authentication
我正在使用cakephp 2.4.7進行開發,我非常困惑,我不知道實現我所需的最佳方法是什么。
我的蛋糕項目類似於社交網絡,並且我已經編寫了Web部分的很大一部分。 現在,我想開始為本地移動應用程序(iOS,Android等)開發API。
在我的項目中,我使用標准的form
authentication
進行普通的Web瀏覽器方式。
我如何同時使用basic
authentication
和form
authentication
? Web瀏覽器使用的表單身份驗證和本機Mobiel應用程序的基本身份驗證。
我的AppController看起來像:
public $components = array(
'...',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'users',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'authError' => 'You must be loggedin to view this page.',
'loginError' => 'Invalid user credentials.',
'authorize' => array('Controller'),
'authenticate' => array(
'Form' => array(
'userModel' => 'User',
)
),
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
)
);
我知道文檔的這一部分:
使用多個處理程序可以使您支持登錄用戶的不同方式。登錄用戶時,將按照聲明它們的順序檢查身份驗證處理程序。
但是login
操作呢?
有更好的解決方案嗎? 例如,使用令牌進行身份驗證。
我搜索了很多有關API versioning
和prefix routing
。 我發現的唯一結果是,cake 2.x不支持前綴路由。
我的目標是具有以下結構:
/users/view/2
用於網絡瀏覽器) /api/1.0/users/view/2.json
用於移動應用。 在UsersController中:
public function view($id = null) {
// Webbrowser
}
public function api_1_0_view($id = null) {
// mobile app version 1.0
}
public function api_2_0_view($id = null) {
// mobile app version 2.0
}
您能給我一個我如何解決問題的想法嗎?
Basic
是無狀態身份驗證,不需要登錄操作。 憑據將根據每個請求進行傳遞和檢查。 您可以在這里閱讀更多信息。
盡管可以將AuthComponent配置為使用多個身份驗證器,但最好不要同時使用無狀態和有狀態的身份驗證提供程序。 在您的AppController的beforeFilter()中,您應該檢查網址(在這種情況下應該很容易,因為來自移動設備的所有網址都帶有“ api”前綴),並有選擇地使用Form
或Basic
身份驗證提供程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.