um add laraveli ou mais tabelas de usuário para Exemplo de administração.
Partes do arquivo podem precisar de ser modificado de acordo com a situação real
Criando um modelo de administração
php artisan make:model Admin -m
Escrever administradores de campo
Schema::create('admins', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Editar modelo de administração
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
/**
* @property int $id
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
*/
class Admin extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'password','remember_token'
];
protected $hidden = [
'password','remember_token'
];
}
arquivos de configuração auth.php Modificar
'guards' => [
...
'admin' => [
'driver' => 'session',
'provider' => 'admins'
]
],
'providers' => [
...
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
Crie um diretório admin / Auth em app / HTTP / Controllers
Criar um HomeController.php arquivo no diretório de administração (este arquivo é usado para testar a página de salto após o sucesso login)
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* HomeController constructor.
*/
public function __construct()
{
$this->middleware('auth:admin');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('admin.home');
}
}
Use o comando para gerar um Pedido
php artisan make:request AdminLoginRequest
Neste ponto no catálogo app / HTTP / Request irá gerar o arquivo e, em seguida, editar este arquivo
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class AdminLoginRequest extends FormRequest
{
/**
* 确定用户是否有权发出此请求.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* 获取适用于请求的验证规则.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'password' => ['required', 'min:6'] //密码必须,最小长度为6
];
}
}
Criar um LoginController.php arquivo no diretório admin / Auth
<?php
namespace App\Http\Controllers\Admin\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\AdminLoginRequest;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function showLoginForm()
{
return view('admin.auth.login');
}
public function postLogin(AdminLoginRequest $loginRequest)
{
$data = $loginRequest->only('name', 'password');
$result = Auth::guard('admin')->attempt($data, true);
if ($result) {
return redirect(route('admin.home'));
} else {
return redirect()->back()
->with('name', $loginRequest->get('name'))
->withErrors(['name' => '用户名或密码错误']);
}
}
public function postLogout()
{
Auth::guard('admin')->logout();
return redirect(route('admin.login.show'));
}
}
Adicionar rotas. Abra o aplicativo / prestadores / RouteServiceProvider.php
Nos mapWebRoutes método () método adiciona um método mais tarde
protected function mapAdminWebRoutes()
{
Route::middleware('web')
->prefix('admin')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));
}
Chamar para aumentar acima do método de mapeamento () no método
public function map()
{
$this->mapApiRoutes();
$this->mapAdminWebRoutes();//调用新增的方法
$this->mapWebRoutes();
}
Adicionar uma rota no diretório admin.php arquivo de rotas
<?php
Route::get('login','Admin\Auth\LoginController@showLoginForm')
->middleware('guest:admin')
->name('admin.login.show');
Route::get('/','Admin\HomeController@index')
->name('admin.home');
Route::post('login','Admin\Auth\LoginController@postLogin')
->middleware('guest:admin')
->name('admin.login.post');
Route::post('logout','Admin\Auth\LoginController@postLogout')
->middleware('auth:admin')
->name('admin.logout');
Home.blade.php copiar a recursos / views / sob administração
A cópia layouts / app.blade.php foi layouts / admin.blade.php, modificar o local apropriado
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@guest('admin')
<li><a href="{{ route('admin.login.show') }}">admin Login</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
{{ Auth::guard('admin')->user()->name }} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="{{ route('admin.logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('admin.logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</li>
</ul>
</li>
@endguest
</ul>
Copie o login.blade.php para o diretório próxima admin / Auth
@extends('layouts.admin')@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Admin Login</div>
<div class="panel-body">
<form class="form-horizontal" method="POST" action="{{ route('admin.login.post') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label for="name" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control" name="name"
value="{{ old('name') }}" required autofocus>
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-8 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Login
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
preenchimento dos dados
php artisan make:seed AdminsTableSeeder
Editar AdminsTableSeeder.php
public function run()
{
\App\Admin::insert([
'name'=>'yzha5',
'password'=> bcrypt('123456')
]);
}
DatabaseSeeder.php
$this->call(AdminsTableSeeder::class);
Arquivos enviados para o servidor servidor, login, executar o comando Fill
php artisan migrate
php artisan db:seed
Neste ponto, abrir diretamente http: // xxx / admin não ir para o http: // xxx / admin / de login , é necessário para lidar com algumas exceções. Abra o aplicativo / Exceções / Handle.php
Reescrever método não autenticado ().
use Illuminate\Support\Facades\Route;
protected function unauthenticated($request, AuthenticationException $exception)
{
return starts_with(Route::currentRouteName(), 'admin')
? redirect(route('admin.login.show'))
: parent::unauthenticated($request, $exception);
}
olhar perfeito
Quando o código acima, quando o login admin, visita novamente / admin / login para esse URI, irá saltar automaticamente para / home este URI, é porque este middleware convidado salto para o padrão / home, que é RedirectIfAuthenticated no diretório middleware. arquivo php.
Solução é:
Criação de uma única peça, intitulada: RedirectIfAdminAuthenticated
php artisan make:middleware RedirectIfAdminAuthenticated
Editar este arquivo:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAdminAuthenticated
{
/**
* Handle an incoming request.
*
* @param $request
* @param Closure $next
* @param null $guard
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/admin');
}
return $next($request);
}
}
在Kernel.php中添加一行
protected $routeMiddleware = [
...
'admin.guest' => \App\Http\Middleware\RedirectIfAdminAuthenticated::class,
...
];
更改admin路由,将guest:admin改为admin.guest:admin
Route::get('login','Admin\Auth\LoginController@showLoginForm')
->middleware('admin.guest:admin')
->name('admin.login.show');
Route::post('login','Admin\Auth\LoginController@postLogin')
->middleware('admin.guest:admin')
->name('admin.login.post');
Estes são os detalhes de como laravel alcançar sistema de login multi-usuário
Saiba mais informações, visite:
Acima de esperança para ajudar a todos, muitos Phper sempre encontrar alguns problemas e gargalos no tempo avançada, escrever mais código de negócios nenhum senso de direção, eu não sei por onde começar a subir, o que eu compilei algumas informações, incluindo mas não limitados a: uma arquitetura distribuída, altamente escalável e de alto desempenho, de alta concorrência, ajuste de desempenho do servidor, TP6, laravel, YII2, Redis , Swoole, Swoft, Kafka, Mysql otimização, shell scripts, Estivador, micro-serviços, Nginx, etc. conhecimento mais avançado necessário para produtos avançados secos pode ser livre para que todos possam compartilhar , necessidade de ser adicionado ao meu grupo oficial aqui .