Laravel 修改默认的User模型,并完成登录登出操作

  1. 直接修改模型名称从User ->AdminUser
class AdminUser extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

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

2.通过创建alter_users_table修改数据库中的表名

class AlterTableUsers extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::rename('users','admin_users');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

3.执行 php artisan migrate 操作更新数据库
4.修改config中的auth.php文件

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\AdminUser::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

5.创建AuthController.php 完成显示登录界面,登录,登出操作

class AuthController extends Controller
{
    //登录界面
    public function login()
    {
        return view('login');
    }
    //登录操作
    public function doLogin()
    {

        $this->validate(request(),[
            'email'=>'required|email',
            'password'=>'required',
        ],[
            'email.required'=>'邮箱必填',
            'email.email'=>'输入的邮箱格式错误',
            'password.required'=>'密码必填',
        ]);

        $user = request(['email','password']);
        $is_remember = boolval(request('is_remember'));
        if (Auth::attempt($user,$is_remember))
        {
            //登录成功
            return redirect('/');
        }
        return redirect()->back()->withErrors('邮箱或密码输入错误');

    }
    //退出登录
    public function logout()
    {
        Auth::logout();
        return redirect('/login');
    }
}

6.对于出现的各种验证错误,要做模板中进行展示

@if(count($errors) > 0)
    <div class="alert alert-danger" role="alert">
        @foreach($errors->all() as $error)
            <li>{{$error}}</li>
        @endforeach
    </div>

@endif

7.在web.php 文件中添加路由

//需要登录才可以进入的界面
Route::group(['middleware'=>['auth']],function(){
    //首页
    Route::get('/', function () {
        return view('welcome');
    });
    //登出操作
    Route::get('/logout','\App\Http\Controllers\AuthController@logout');

});



//登录界面
Route::get('/login','\App\Http\Controllers\AuthController@login');
//登录操作
Route::post('/doLogin','\App\Http\Controllers\AuthController@doLogin');

8.如果强行使用网址访问需要登录才能进入的界面可以通过修改Exceptions文件夹下的Handler.php文件中的方法进行重定向到登录界面

protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }
        //不登录强行访问 重定向到登录界面
        return redirect('/login');
    }

猜你喜欢

转载自blog.csdn.net/qq_20933903/article/details/82884010
今日推荐