我的Laravel实例不记得用户已登录。当我输入Auth::user()->accountName
时,它会告诉我我在LoginController
中想要什么,但是在网站上,我需要它来确认用户已登录,但无法正常工作。
当我在MainController
中返回视图('neu_anmeldung')时,我可以检查用户是否已登录并可以使用。问题是,当我单击导航栏上的另一个链接时,它会自动注销,并且MainController
在签入视图时不起作用。我认为它仅将Auth::user()
变量保存在本地,因为我可以从MainController
访问它,但不能从视图访问它。
控制器
<?php
// My Login Controller
class MainController extends Authenticate
{
function index()
{
return view('home');
}
function checklogin(Request $request)
{
$user = Input::get('user');
$pwd = Input::get('password');
try {
$validated = $request->validate([
'user' => 'required',
'password' => 'required|min:3'
]);
$user = pupil::where('accountName', $user)
->where('password', $pwd)
->first();
if ($user) {
Auth::login($user);
return redirect('/successlogin');
} else {
return redirect()->back()->withInput('email');
}
} catch (QueryException $e) {
return back()->withError($e->getMessage())->withInput();
}
}
function successlogin()
{
return redirect('/neue_anmeldung');
}
function logout()
{
Auth::logout();
return redirect('/index');
}
}
查看
@if(isset(Auth::user()->accountName))
<div class="alert">
<strong>Wilkommen {{Auth::user()->accountName}}</strong>
<br/>
<a href="{{url('/index/logout')}}">Logout</a>
</div>
@else
<script>window.location = "/index";</script>
@endif
模型
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class pupil extends Authenticatable
{
use Notifiable;
protected $table = 'pupil';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}