Sef*_*an2 5 cookies laravel-5.2 laravel-blade
我my_cookie通过Javascript 设置了一个cookie
function createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toUTCString();
}
else {
expires = "";
}
document.cookie = name+"="+value+expires+"; path=/";
}
....
createCookie('my_cookie', 1, 365);
....
Run Code Online (Sandbox Code Playgroud)
通过Chrome Cookie Inspector我看到cookie是使用值1创建的.
通过Laravel Blade我试过:
@if (Cookie::get('my_cookie') !== null) // or Cookie::get('my_cookie') == 1 or Cookie::get('my_cookie') == '1'
<p>set</p>
@else
<p>unset</p>
@endif
Run Code Online (Sandbox Code Playgroud)
写道 unset
@if (request()->cookie('my_cookie') == '1') // or @if (request()->cookie('my_cookie') == 1)
<p>set</p>
@else
<p>unset</p>
@endif
Run Code Online (Sandbox Code Playgroud)
结果总是如此unset.
小智 28
您可以使用
App\Http\Middleware\EncryptCookies$except满足您需求的领域.
中间件的代码看起来像这样
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;
class EncryptCookies extends BaseEncrypter
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
'my_cookie'
];
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用Cookie::get('my_cookie')或request()->cookie('my_cookie')检索它
Kma*_*rYC 11
从评论移开:只有laravel创建的cookie才能通过laravel处理.尝试原生cookie $ _COOKIE.或者尝试通过laravel创建cookie然后dd($ _ COOKIE)你会发现它与由本机PHP创建的cookie完全不同
小智 6
这是因为 Laravel 加密了他们的 cookie。您可以不包含EncryptCookies中间件来处理 cookie,而 cookie 不是由 laravel 设置的。删除\App\Http\Middleware\EncryptCookies::class从$middlewareGroups在app\Http\Kernel.php
| 归档时间: |
|
| 查看次数: |
4636 次 |
| 最近记录: |