我有一个使用此metas的网络应用程序:
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
这个应用程序是一个基于Web的PHP Silex / Symfony,启动时登录会话。
我的iPad上有我的图标,但每次打开我的应用程序时, safari会重新加载登录页面,即使我之前已登录过。
有人可以帮我吗?
// Register routes
$app->get('/', 'index.controller:indexAction')->bind('index')->value('require_authentication', true);
$app->get('/login', 'auth.controller:loginAction')->bind('login');
$app->get('/logout', 'auth.controller:logoutAction')->bind('logout');
$app->post('/auth', 'auth.controller:authAction')->bind('auth');
....
//before stack - check for user login, if not throw AccessDeniedHttpException
$app->before(function(Request $request, Application $app) {
if ($app['request']->get('require_authentication')) {
if (null === $user = $app['session']->get('user')) {
throw new AccessDeniedHttpException("require auth");
}else{
$app["twig"]->addGlobal("user", $user);
}
}
});
此网络应用仅在iPad上使用,因此无需为每台设备识别代码。
答案 0 :(得分:1)
/
的路由将捕获所有请求,因此您需要reorder them such that more specific route paths are not caught be less specific ones:
定义路线的顺序非常重要。将使用第一个匹配路由,因此在底部放置更多通用路由。
这意味着您的代码应如下所示:
// Register Routes
$app->get('/login', 'auth.controller:loginAction')->bind('login');
$app->get('/logout', 'auth.controller:logoutAction')->bind('logout');
$app->post('/auth', 'auth.controller:authAction')->bind('auth');
$app->get('/', 'index.controller:indexAction')->bind('index')->value('require_authentication', true);