我正在使用Restler和由Brent Shaffer編寫的OAuth2模塊。我想要做的是根據他們發送的令牌來確定用戶,而不僅僅是OAuth2Server類。Restler + OAuth2 - 正確識別用戶
有兩種方法,我可以看到這樣做。希望這解釋了我正在嘗試做的事情。
方法1:我不是特別喜歡這種方法,但它的工作原理。
POST /v1/token
返回我的令牌,包括USER_ID,例如
{
"access_token":"282090609b3407d981c2bea633a39739595ba426",
"expires_in":3600,
"token_type":"Bearer",
"scope":"basic",
"refresh_token":"b60a4e5f759168df857342380f3550bc120b6f9d",
"user_id": 5
}
既然客戶知道user_ID的,它與我的要求發送:
GET /v1/dashboard?id=5
我__isAllowed方法需要關心檢查用戶沒有更改ID,請求不是他們的信息。
public function __isAllowed() {
$token = static::$server->getAccessTokenData(Request::createFromGlobals());
return (($token['user_id'] > 0) && ($token['user_id'] === $_GET['id']) && ($token['group_id'] == self::$group_id));
}
儀表盤類看起來是這樣的:
/*
* @version 1
* @access protected
*/
class Dashboard {
/**
* @param int $id Customer ID {@from query}
* @return type
*/
public function index($id) {
$s = Dao\ViewCustomerDaoObject::findId($id);
return array_merge($s->toJSON(), $widgets);
}
}
這是我寧願被調用API:
GET /v1/dashboard
當我要求之上,加入oauth2_token表到我的儀表板表。我認爲這可能有點破解,我不希望這會導致問題。
該信息已在OAuth2Server實例中提供,因爲OAuth2Server類確實確定是否使用了正確的標記以及它們的user_id是什麼。
有人可以請指導我在正確的方向處理這種情況,特別是與Restler?