我登录然后在会话中保留用户名,然后我刷新此页面,但会话没有保留值。
这是我的代码:
class WelcomeCtrl extends Controller
{
public function gotoWelcome()
{
return view('welcome')->with('user',Session::get('user'));//nothing in session
}
public function dologin(){
$username = $_POST['username'];
$password = $_POST['password'];
$result = "";
if($username && $password){
$result = User::getUser($username, $password);
if($result){
Session::set('user',$result);
return response()->json([true, Session::get('user')]);//I get value expected, this is ok.
}
}
return response()->json([false, Session::get('user')]);
}
}
答案 0 :(得分:2)
您是否已将中间件组“web”添加到路由中。在5.1中,这是所有路由的默认值,并用于会话管理和csrf验证等。
答案 1 :(得分:1)
如果使用想要使用Session ::请确保通过以下方式添加会话Facade:
use Session;
而不是这个,您可以使用会话助手。所以你可以使用以下代码:
session()->user()->email;
session()->get('user');
session()->flash('message', 'Hi there.');
有关详情,请参阅helpers。
答案 2 :(得分:0)
Session::put('key','value');//to put the session value
Session::get('key');//to get the session value
Session::has('key');//to check the session variable exist or not
答案 3 :(得分:0)
记住一件事。当您在Laravel 5.2中使用ajax发布表单时,将出现CsrfTokenMismatch错误。要避免这种情况,请在$ except数组中的App / Http / Middleware / VerifyCsrfToken.php中添加您使用ajax接受表单值的路由名称。然后该路由将接受带有ajax请求的表单值。
答案 4 :(得分:0)
会话用于存储用户信息请求。 Laravel提供了各种驱动程序,例如文件,cookie,数组和数据库等,以处理会话数据。默认情况下,使用文件驱动程序,因为它是轻量级的。可以在config / session.php中存储的项目中配置会话。 How To Set Session In Laravel?
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class SessionController extends Controller {
public function accessSessionData(Request $request) {
if($request->session()->has('my_name'))
echo $request->session()->get('my_name');
else
echo 'No data in the session';
}
public function storeSessionData(Request $request) {
$request->session()->put('my_name','Ajay kumar');
echo "Data has been added to session";
}
public function deleteSessionData(Request $request) {
$request->session()->forget('my_name');
echo "Data has been removed from session.";
}
}
?>