将用户重定向到laravel中的另一个页面后,登录用户数据丢失

时间:2018-08-19 16:55:16

标签: laravel-5

我是laravel的新手,现在我想使用laravel Auth创建一个登录页面。

我的用户表中有五个列,分别是userid,用户名,remember_token,created_at和updated_at。

用户输入用户名和密码后,数据将被发送到LoginController中的authenticate()。如果用户名和密码正确,则用户将被重定向到/ successlogin,并且用户名将打印在/ successlogin中。

我已经测试了我的代码。可以将用户重定向到/ successlogin url,但是似乎用户在重定向后立即注销。

这是我的代码: LoginController

    <?php

    namespace App\Http\Controllers\Auth;

    use App\Http\Controllers\Controller;
    use Auth;
    use Illuminate\Foundation\Auth\AuthenticatesUsers;
    use Illuminate\Http\Request;
    use App\User as User;
    use Hash;

    class LoginController extends Controller
    {
        /*
        |--------------------------------------------------------------------------
        | Login Controller
        |--------------------------------------------------------------------------
        |
        | This controller handles authenticating users for the application and
        | redirecting them to your home screen. The controller uses a trait
        | to conveniently provide its functionality to your applications.
        |
        */
    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function username()
    {
        return 'username';
    }

    public function id()
    {
        return 'user_id';
    }


    public function authenticate(Request $request)
    {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required',
            //'captcha' => 'required|captcha'
        ]);

        $remember = $request->input('remember');
        if (Auth::attempt(['username' => $request->input('username'), 'password' => $request->input('password')], $remember)) 
        {
            return redirect('successlogin');
        }else{
            return back()->with('error', 'Wrong Login Details');
        }        
    }

    function successlogin()
    {
        return view('successlogin');
    }

    public function logout()
    {
        Auth::logout();
        return redirect()->to('/login');
    }
}

successlogin.blade.php

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
@if(isset(Auth::user()->username))
{{ Auth::user() }}
@else
<p>no message</p>
@endif
</body>
</html>

User.php

<?php

namespace App\Models;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */

    public $timestamps = false;
    protected $table = 'user';



    protected $fillable = [
        'username',
        'password',
        'remember_token'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /*public function getAuthPassword()
    {
        return $this->password;
    }

    public function setPasswordAttribute($password)
    {
        $this->attributes['password'] = bcrypt($password);
    }*/
}

重定向到/ successlogin后,仅打印“ no message”。为什么重定向后登录用户数据被破坏?非常感谢你!

0 个答案:

没有答案