Laravel:用户已登录,但仅在我的控制器中工作

时间:2019-02-02 09:20:13

标签: php laravel

我的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',
    ];
}

0 个答案:

没有答案