laravel 后台登陆

一: 新建管理员表admins,字段和users一致,其余字段可以自定义添加

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateAdminsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->nullable();
            $table->string('password');
            $table->string('salt');
            $table->integer('login_num')->comment('登陆次数');
            $table->integer('last_login')->comment('最后登陆时间');
            $table->integer('admin_rank_id')->comment('等级id');
            $table->foreign('admin_rank_id')->references('id')->on('admin_rank');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('admins');
    }
}

二: 后台添加管理员

controller

/**
   * 创建新管理员表单页面
   *
   * @return Response
   */
  public function create()
  {
    $admin = $this->dispatch(new AdminFormFields());
    $admin_ranks = AdminRank::all();
    return view('admin/admin/create', ['admin' => $admin, 'admin_ranks' => $admin_ranks]);
  }

  /**
   * 将新创建的管理员存储到存储器
   *
   * @param Request $request
   * @return Response
   */
  public function store(AdminRequest $request)
  {
      if($request->input('password') != $request->input('confirm_password'))
      {
        return redirect('admin/admins');
      }
      $admin = Admin::create($request->fillData());
      
      return redirect('admin/admins');
  }
request

/**
   * Get the validation rules that apply to the request.
   *
   * @return array
   */
  public function rules()
  {
    return [
      'name' => 'required',
      'email' => 'required',
      'password' => 'required',
    ];
  }

  /**
   * Return the fields and values to create a new post from
   */
  public function fillData()
  {
    $salt = mt_rand(1000, 9999);
    $password = $this->password.$salt;
    return [
        'name' => $this->name,
        'email' => $this->email,
        'password' => bcrypt($password),
        'salt' => $salt,
        'login_num' => 1,
        'last_login' => time(),
        'admin_rank_id' => $this->admin_rank_id,
    ];
  }

form

protected $fieldList = [
        'name' => '',
        'email' => '',
        'password' => '',
        'admin_rank_id' => '',
    ];

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($id = null)
    {
        $this->id = $id;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $fields = $this->fieldList;
        if ($this->id) {
            $fields = Admin::findOrFail($this->id);
        }
        return $fields;
    }

三:添加auth的admin配置:config/auth.php,并添加路由

auth.php配置

/*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

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

        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

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

路由:

   
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function(){
    // 控制器在 "App\Http\Controllers\Admin" 命名空间下


	  Route::resource('admins', 'AdminController');
	  Route::resource('admin_ranks','AdminRankController');
	  Route::get('login', 'AuthController@login');
    Route::post('login', 'AuthController@login_in');
	  Route::get('logout', 'AuthController@logout');
});

四:自定义登陆中间件


middware

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class AdminAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('admin/login');
            }
        }
        return $next($request);
    }
}


将中间件添加到kernel.php


protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'auth.admin' => \App\Http\Middleware\AdminAuthMiddleware::class,
    ];

为路由添加中间件

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function(){
    // 控制器在 "App\Http\Controllers\Admin" 命名空间下

		Route::group(['middleware' => 'auth.admin:admin'], function () {
      Route::resource('admins', 'AdminController');
	    Route::resource('admin_ranks','AdminRankController');
    });


	  Route::get('login', 'AuthController@login');
    Route::post('login', 'AuthController@login_in');
	  Route::get('logout', 'AuthController@logout');
});

五: 登陆

登陆表单直接使用用户表单就可以

       登陆后台

    

<?php

namespace App\Http\Controllers\Admin;

use App\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Auth;

class AuthController extends Controller
{

	use AuthenticatesUsers;

  protected $redirectTo = 'admin/friend_links'; //这个是登录成功的重定向链接,有时候需要修改。
  protected $guard = 'admin';
  

	public function login()
	{
		return view('admin/auth/login');
	}

	public function login_in(Request $request)
	{
		$name = $request->input('user_name');
		$password = $request->input('password');
		if(empty($name) || empty($password))
		{
			return redirect('admin/login');
		}
		$has_user = Admin::where('name', $name)->count();
		if($has_user > 0){
			$user = Admin::where('name', $name)->first();
			$password = $password.$user['salt'];

			if (Auth::guard('admin')->attempt(['name' => $name, 'password' => $password]))
			{
				 $admin = Auth::guard('admin')->user();
				 return redirect('admin/friend_links');
			} else {
				return redirect('admin/login');
			}
		} else {
			return redirect('admin/login');
		}
	}

	public function logout(Request $request)
	{
		Auth::guard('admin')->logout();
    $request->session()->forget($this->guard()->getName());
    $request->session()->regenerate();
    return redirect('admin/login');
	}

	/** 
   * 自定义认证驱动 
   * @return mixed 
   */ 
  protected function guard() 
  { 
      return  Auth::guard($this->guard); 
  } 

  /**
   * 重写验证时使用的用户名字段
   */
  //public function username()
  //{
      // return 'name';
  //}

}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值