1. 创建后台用户模型和数据表
php artisan make:model Models/Admin -m
2. 设置表字段
public function up()
{
Schema::create('admins', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name',100)->comment('用户名');
$table->string('email',100)->comment('邮箱');
$table->string('password',100)->comment('密码');
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
3. 填充数据表 AdminsTableSeeder.php
public function run()
{
DB::table('admins')->insert([
'name' => 'admin',
'email' => '1065628795@qq.com',
'password' => bcrypt('123456'),
]);
}
4. 新建后端路由 admin.php
Route::get('admin/login', 'Admin\LoginController@getLogin')->name('admin.login');
Route::post('admin/login', 'Admin\LoginController@postLogin');
Route::get('admin/logout', 'Admin\LoginController@logout');
5. 修改app/Providers/RouteServiceProvider.php
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
$this->mapAdminRoutes();
//
}
...
protected function mapAdminRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));
}
6. 修改config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
...
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
7. 登录控制器 LoginController
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends AdminController
{
/**
* 设置成功登录后转向的页面:
*
* @var string
*/
public $redirectPath = 'admin.index';
/**
* 设置退出登录后转向的页面
*
* @var string
*/
protected $redirectAfterLogout = 'admin/login';
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesUsers;
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:admin', ['except' => 'logout']);
}
/**
* Show the application login form.
*
* @return \Illuminate\Http\Response
*/
public function getLogin()
{
return view('admin.login');
}
/**
* Handle a login request to the application.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
*/
public function postLogin(Request $request)
{
$field = filter_var($request->input('username'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
$request->request->add([$field => $request->input('username')]);
$credentials = $request->only($field, 'password');
if (auth('admin')->attempt($credentials, $request->has('remember'))) {
return redirect()->intended(route($this->redirectPath));
}
return redirect('admin/login')->withInput()->withErrors([$this->username() => [trans('auth.failed')]], 'login');
}
/**
* Log the user out of the application.
*
* @return \Illuminate\Http\Response
*/
public function logout()
{
auth('admin')->logout();
return redirect($this->redirectAfterLogout);
}
}
8. 登录页面 login.blade.php
{{ csrf_field() }}
登录
9. 页面提示信息展示以及后台登录成功用户名信息展示 message.blade.php
@if(session()->has("errormsg"))
{{ session("errormsg") }}.
@endif
//用户信息展示
{{ auth()->user()->name }}