gsk*_*gsk 6 php session laravel angularjs laravel-5
我正在使用Laravel 5开发Web应用程序,使用RESTFUL apis开发angularJs.
使用middleware
到身份验证目的.我的问题是在同时发送几个请求后,系统自动注销并从laravel端发送401异常.
API基础控制器:
class ApiController extends BaseController {
use DispatchesCommands, ValidatesRequests;
function __construct() {
$this->middleware('api.auth');
}
}
Run Code Online (Sandbox Code Playgroud)
中间件:
class APIMiddleware {
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if (!Auth::check()) {
abort(401, "Unauthorized");
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
登录控制器
public function login(LoginRequest $request) {
if (Auth::check()) {
Auth::logout();
}
if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')], $request->input('is_remember'))) {
return array(true);
} else {
abort(401, "Invalid email & password");
}
}
Run Code Online (Sandbox Code Playgroud)
几个请求消失后,Server注销并发送401异常.我坚持这个问题.
Ash*_*nch 15
现在,我不能100%确定(并根据您的设置我甚至不能说我90%确定),但改变后,我session_driver
从file
对database
我似乎已经修复了这个问题-那就是如果是同样的问题.
我想用我的应用程序做同样的事情 - 这是在一个页面的启动,我正在提出6请求(这是开发,我将把它改为一个所以请不要哭).如果我加载此页面,它可以使用大约3或4个请求,然后其他2-3个回复并返回unauthorised
响应.它也只在需要的请求时发生middleware => auth
.
因此,我的理论是为什么会发生这种情况:因为默认情况下,会话保存在文件中 - 一次发出多个请求意味着文件一次打开6次 - 可能会弄乱它(取决于你的机器).因此,将会话更改为数据库(一次有数千个请求),可以正常工作!
解:
.env
文件并切换SESSION_DRIVER=file
到SESSION_DRIVER=database
.php artisan session:table
.composer dump-autoload
好好练习.php artisan migrate
).注意:我不是100%肯定,但如果是这样,但对我来说这个解决方案有效.我也知道这个问题真的很老了,但是我和我一起工作的开发人员都遇到过这个问题而且似乎没有解决方案,所以就好像我发布这个问题一样.
设法弄清楚..由于我几乎所有项目都使用laravel,所以我忘记更改会话名称,结果,一个会话覆盖另一个会话,导致自动注销..所以如果你有多个laravel正在运行的项目,确保它们都有不同的会话名称。希望这对将来的人有帮助! 这是关于此问题的 Laracast 线程。
对我来说,这是解决问题的过程:
cookie
更改了中键的值app/session.php
。php artisan config:clear
。 归档时间: |
|
查看次数: |
7898 次 |
最近记录: |