Web サイト (Zend Framework2+ZfcUser+ZfcUserDoctrineORM) で Android 経由で認証する必要があります。私を認証する URL を呼び出して、自分の session_id を含む json オブジェクトを返したいと考えています。それが正しい方法かどうかはわかりませんが、zfcUserでそれを行う方法がわかりません。
デビッド
次に、この session_id を Shared Preferences ストレージに保存できるようになります。
Web サイト (Zend Framework2+ZfcUser+ZfcUserDoctrineORM) で Android 経由で認証する必要があります。私を認証する URL を呼び出して、自分の session_id を含む json オブジェクトを返したいと考えています。それが正しい方法かどうかはわかりませんが、zfcUserでそれを行う方法がわかりません。
デビッド
次に、この session_id を Shared Preferences ストレージに保存できるようになります。
まず私の英語でごめんなさい。私のアプリケーションでは、ほぼ同じものが必要です。Ok。したがって、yoursite.com/module/YourModuleName/Module.php で次のようにします。
use YourModuleName\Model\YourModuleName;
class Module {
public function onBootstrap(MvcEvent $e) {
$app = $e->getApplication();
$em = $app->getEventManager();
$sm = $app->getServiceManager();
$auth = $sm->get('zfcuser_auth_service');
$model = new OrdersManager();
if (!$auth->hasIdentity()) {
$em->attach(MvcEvent::EVENT_ROUTE, function($e) use ($app, $sm, $auth, $model) {
$match = $e->getRouteMatch();
// No route, this is a 404
if (!$match instanceof RouteMatch) {
return;
}
$match = $e->getRouteMatch();
$matchParams = $match->getParams();
// $matchParams['hash'] == some url param
if (isset($matchParams['hash'])) {
$model->setDbAdapterColibo($sm->get('dbAdapter'));
$usersSqlObject = $model->getUsers();
$salt = md5('caw');
foreach ($usersSqlObject as $key => $user) {
$hash = hash('sha256', $salt.$param1.$user['user_id']);
if ($hash == $matchParams['hash']) {
$authAdapter = $sm->get('ZfcUser\Authentication\Adapter\AdapterChain');
$request = $app->getRequest();
$request->getPost()->set('identity', $user['email']);
// You may use user password to auth user
$request->getPost()->set('credential', $user['user_id']);
$result = $authAdapter->prepareForAuthentication($request);
$auth->authenticate($authAdapter);
// do your staff with session or other.
// after this you will be redirect to page from where query was
break;
}
}
}
});
}
}
}
yoursite.com/module/YourModuleName/config/module.config.php を忘れないでください $matchParams = $match->getParams(); で受け取るには、URL パラメーターを含むルートを追加する必要があります。私が説明した場合、あなたは認証され、すぐにサイトにリダイレクトされます。例: http://example.com/someController/someAction/param1/param2/hash ... 結果は auth になり、ページを開くhttp://example.com/someController/someAction/param1/param2/hash ...
Ok。これが私のアプリに必要なものです。この助けを願っています。
PS いくつかのアイデアはZend Framework 2 から得られます - ZFCUser による認証のグローバル チェック