【发布时间】:2017-04-04 09:42:49
【问题描述】:
我在创建和读取 Laravel 会话时遇到问题。 我可以创建会话值,但问题是访问数据。 如果我在 POST 请求中创建会话值,则无法在 GET 请求中访问它。
这是我的路线
Route::get('/', 'HomeController@index');
Route::get('/admin/dashboard', 'AdminController@dashBoard');
Route::post('/admin/login_admin', 'AdminController@doLogin');
Route::post('/admin/login_test', 'AdminController@test');
Route::get('/admin/login', 'AdminController@seeLogin');
这里使用post方法的doLogin:
public function doLogin(Request $request){
$email = $request->input("email");
$password = $request->input("password");
$checkerInfo = AdminGetLoginChecker($email, $password);
//if logged in
if($checkerInfo){
$request->session()->put('loggedIn', '1');
$request->session()->put('userId', $checkerInfo);
$request->session()->save();
return response()->json([
'success' => true,
'message' => 'logged In'
]);
}
return response()->json([
'success' => false,
'message' => 'Incorrect User Email, Password'
]);
}
现在的问题是如果请求访问其他获取请求部分中的会话值,那么它不允许访问。
public function dashboard(Request $request)
{
$data = $request->session()->all();
print_r($data);
return view('welcome', ['name' => 'James']);
}
这里不显示保存的会话数据,因为它是一个 GET 请求。
现在,如果尝试使用 POST 请求在任何其他方法中获取请求,它将在 doLogin 方法中显示之前保存的数据
//it's a POST requset
public function test(Request $request)
{
$data = $request->session()->all();
print_r($data);
}
如何在 GET 请求的方法中访问会话数据?
提前致谢,
更新:
请注意在 verifyCsrfToken middelwere 的异常区域添加 url "'/admin/login_admin'" 以避免在发布数据时出现 csrf 令牌问题
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
'url' => '/admin/login_admin'
];
}
【问题讨论】:
-
曾经解决过这个问题吗? =/
标签: php laravel session post get