- 安装
composer create-project laravel/laravel LaravelMiddleware --prefer-dist
- 常用的中间件:
auth
log php artisan make:middleware AdminOperationLog
- Laravel 5管理中间件。
现在,检查当前用户是否是管理员。因此,转到用户的表迁移文件,再添加一个名为isAdmin的字段,其数据类型为boolean。
<?php
// create_users_migrations
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->string('password');
$table->boolean('isAdmin')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
现在运行以下命令。
php artisan migrate
下一步是创建Laravel提供的身份验证功能。所以在你的终端输入以下内容。
- Laravel 5.1身份验证。
- Laravel 登录认证对应的配置文件为config/auth.php:
php artisan make:auth //自动生成对应文件,5.1版本没这个功能
3、定义认证路由
关于用户认证,Laravel还自带了两个控制器App\Http\Controllers\Auth\AuthController.php和App\Http\Controllers\Auth\PasswordController.php,分别用于处理注册登录和密码重置。
有了控制器,我们接下来定义访问认证相关页面的路由:
// 认证路由...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// 注册路由...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
4、创建认证视图
最后我们来定义注册登录对应的视图文件。首先我们创建注册视图resources/views/auth/register.blade.php:
<form method="POST" action="/auth/register">
{!! csrf_field() !!}
<div>
用户名
<input type="text" name="name" value="{{ old('name') }}">
</div>
<div>
Email
<input type="email" name="email" value="{{ old('email') }}">
</div>
<div>
密码
<input type="password" name="password">
</div>
<div>
确认密码
<input type="password" name="password_confirmation">
</div>
<div>
<button type="submit">注册</button>
</div>
</form>
然后我们创建登录视图resources/views/auth/login.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<!-- resources/views/auth/login.blade.php -->
<form method="POST" action="/auth/login">
{!! csrf_field() !!}
<div>
Email
<input type="email" name="email" value="{{ old('email') }}">
</div>
<div>
Password
<input type="password" name="password" id="password">
</div>
<div>
<input type="checkbox" name="remember"> Remember Me
</div>
<div>
<button type="submit">Login</button>
</div>
</form>
</body>
</html>
键入以下命令启动服务器。
php artisan serve
现在创建三个用户。所以转到以下URL:http:// localhost:8000 / register
目前,我们还没有将任何用户分配给管理员,但我们可以手动完成。请记住,在实时Web应用程序中; 您需要提供一些界面来授予管理权限。在这里,我只是向您展示,如何在签署表格后处理管理中间件。
因此,将任何用户的isAdmin字段分配给数据库中的手动值1。
第3步:制作一个基本的L aravel中间件。
通过键入以下Laravel命令创建一个中间件。
php artisan make:middleware Admin
导航到以下目录。 app >> Http >>中间件>> Admin.php
你可以看到Laravel提供了一些样板。主要有一个函数需要处理,那就是handle()
// Middleware Admin.php
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure
n
e
x
t
∗
@
r
e
t
u
r
n
m
i
x
e
d
∗
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
h
a
n
d
l
e
(
next * @return mixed */ public function handle(
next∗@returnmixed∗/publicfunctionhandle(request, Closure $next)
{
return
n
e
x
t
(
next(
next(request);
}
我们需要在这个函数中编写逻辑,以便我们可以过滤请求,如果满足,则转到目标页面,否则返回登录或任何重定向页面,您将提供。
我在这个函数中写了一个逻辑。
/** Admin.php
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure
n
e
x
t
∗
@
r
e
t
u
r
n
m
i
x
e
d
∗
/
p
u
b
l
i
c
f
u
n
c
t
i
o
n
h
a
n
d
l
e
(
next * @return mixed */ public function handle(
next∗@returnmixed∗/publicfunctionhandle(request, Closure $next)
{
if(auth()->user()->isAdmin == 1){
return
n
e
x
t
(
next(
next(request);
}
return redirect(‘home’)->with(‘error’,‘You have not admin access’);
}
现在,我需要在app >> Http >> Kernel.php中注册这个路由
您可以通过两种不同的方式注册此路线。
您可以注册为全局中间件。
您可以注册为称为路由中间件的特定路由 。
我们正在注册为路由中间件,因此,请转到 受保护的$ routeMiddleware属性。