如何使用 f3 beforeroute() 检查登录用户,重定向到登录然后返回原始路由?
How to use f3 beforeroute() to check for logged in user, redirect to login and then back to original route?
我正在尝试在我的应用程序中使用 fat free 框架。 beforeroute() 似乎是检查活动会话的合乎逻辑的选择,如果此路径上的所有路由都需要身份验证。在我劫持它并强制他们登录之前,我无法找到用户试图去的路线。
我觉得应该有一个 f3 变量,或者我可以在 beforeroute() 中调用的一些简单的东西,它会给我关于他们试图去哪里的信息,我应该能够使用 f3 来完成这个,而不是我在 php 应用程序中使用的其他方法(会话变量,或在域中将某些内容作为参数发送等)。
我是不是漏掉了一些关于 beforeroute() 的东西?它不应该用于这种情况吗?如果不是,最佳做法是什么?
我尝试在会话变量 $f3->set('SESSION.previousUrl', $f3->REALM) 中获取 url,但由于我总是将它们重定向到登录,所以结果总是 /login.
当我在做的时候,有人可以解释一下 f3 中重新路由和重定向之间的区别吗?提前致谢。
只需将来源 URL 传递给登录路由即可。例如:
function beforeRoute($f3,$params) {
if (/*user not authenticated*/)
$f3->reroute('/login?origin='.$f3->PATH);
// or if you need to preserve query strings:
$f3->reroute('/login?origin='.urlencode($f3->PATH.($f3->QUERY?'?'.$f3->QUERY:'')));
}
现在在您的登录路由中,如果用户身份验证正确,则将其重新路由回原点 URL:
function post($f3,$params) {
if (/*user gets authenticated*/) {
$f3->reroute(isset($_GET['origin'])?$_GET['origin']:'/');
}
}
至于redirect方法,它是route
和reroute
的混合。
例如,$f3->redirect('GET /oldpage','/newpage',TRUE)
是 shorthand 用于:
$f3->route('GET /oldpage',function($f3){
$f3->reroute('/newpage',TRUE);
});
最有趣的是用在配置文件中,例如:
[redirects]
GET /oldpage = /newpage
我正在尝试在我的应用程序中使用 fat free 框架。 beforeroute() 似乎是检查活动会话的合乎逻辑的选择,如果此路径上的所有路由都需要身份验证。在我劫持它并强制他们登录之前,我无法找到用户试图去的路线。 我觉得应该有一个 f3 变量,或者我可以在 beforeroute() 中调用的一些简单的东西,它会给我关于他们试图去哪里的信息,我应该能够使用 f3 来完成这个,而不是我在 php 应用程序中使用的其他方法(会话变量,或在域中将某些内容作为参数发送等)。
我是不是漏掉了一些关于 beforeroute() 的东西?它不应该用于这种情况吗?如果不是,最佳做法是什么?
我尝试在会话变量 $f3->set('SESSION.previousUrl', $f3->REALM) 中获取 url,但由于我总是将它们重定向到登录,所以结果总是 /login.
当我在做的时候,有人可以解释一下 f3 中重新路由和重定向之间的区别吗?提前致谢。
只需将来源 URL 传递给登录路由即可。例如:
function beforeRoute($f3,$params) {
if (/*user not authenticated*/)
$f3->reroute('/login?origin='.$f3->PATH);
// or if you need to preserve query strings:
$f3->reroute('/login?origin='.urlencode($f3->PATH.($f3->QUERY?'?'.$f3->QUERY:'')));
}
现在在您的登录路由中,如果用户身份验证正确,则将其重新路由回原点 URL:
function post($f3,$params) {
if (/*user gets authenticated*/) {
$f3->reroute(isset($_GET['origin'])?$_GET['origin']:'/');
}
}
至于redirect方法,它是route
和reroute
的混合。
例如,$f3->redirect('GET /oldpage','/newpage',TRUE)
是 shorthand 用于:
$f3->route('GET /oldpage',function($f3){
$f3->reroute('/newpage',TRUE);
});
最有趣的是用在配置文件中,例如:
[redirects]
GET /oldpage = /newpage