我试图保护route
如果没有从特定页面访问,并且下面的代码片段不能按预期工作;
$referer = Request::header('referer');
if ($referer != "http://www.xxx.co.uk/login" || $referer != "http://www.xxx.co.uk/signup") {
return redirect()->route('/');
}
我的if
语句出错了,因为下面有效;
$referer = Request::header('referer');
if ($referer != "http://www.xxx.co.uk/login") {
return redirect()->route('/');
}
不同之处在于我删除了or
部分。
但如果不同时从paths
访问,我需要它受到保护。
另外添加另一个else if
语句也会打破它
答案 0 :(得分:1)
您必须使用&& 运算符代替 || 。
在你的情况下,使用||,当一个条件是假的时候,另一个条件是真的,所以你的语句将一直执行。
答案 1 :(得分:0)
一般布尔逻辑:
(!A) || (!B) === !(A && B)
所以你的第一个条件实际上是:
!($referer == "http://www.xxx.co.uk/login" && $referer == "http://www.xxx.co.uk/signup")
总是如此,因为引用者无法同时匹配两个URL。相应地修正你的逻辑