讨论数量:
还有一个问题,通过您给我发的修改期限的教程,我做完后发现,无论有没有选中 “记住我”,都会生成 cookie,并且在退出后并没有清除 cookie,中途我用$request->cookie()发现rememberweb...的值也是空的
但我把代码退回到修改前,使用5.8自带的功能,再用$request->cookie()发现rememberweb...里有值了,并且一切操作都是正常的
所以我想问,怎么在原基础上去重新设置cookie的时限,不然默认五年太长了 @Zhibin
@SZL_
使用中间件吧,给你个示范,刚写的测试过可以用,具体可以自己再优化:
namespace App\Http\Middleware;
use Closure;
use Auth;
use Str;
use Illuminate\Contracts\Cookie\QueueingFactory as CookieJar;
class AfterLogin
{
protected $cookies;
/**
* Create a new CookieQueue instance.
*
* @param \Illuminate\Cookie\CookieJar $cookies
* @return void
*/
public function __construct(CookieJar $cookies)
{
$this->cookies = $cookies;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// dd($request);
$response = $next($request);
if ($request->getMethod() != 'POST') {
return $response;
}
if (!Str::endsWith($request->getRequestUri(), 'login')) {
return $response;
}
$rememberTokenName = Auth::getRecallerName();
$cookie = $this->cookies->queued($rememberTokenName);
if (is_null($cookie)) {
return $response;
}
$cookieValue = $cookie->getValue();
$this->cookies->queue($rememberTokenName, $cookieValue, 1440);
return $response;
}
推荐文章: