Heim  >  Artikel  >  PHP-Framework  >  Ernennen Sie einen Administrator und erweitern Sie die Berechtigungen für normale Laravel-Benutzer

Ernennen Sie einen Administrator und erweitern Sie die Berechtigungen für normale Laravel-Benutzer

藏色散人
藏色散人nach vorne
2020-10-29 14:48:122645Durchsuche

Die folgende Tutorial-Kolumne von Laravel zeigt Ihnen, wie Sie die Berechtigungen für normale Laravel-Benutzer erhöhen können. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!

Ernennen Sie einen Administrator und erweitern Sie die Berechtigungen für normale Laravel-Benutzer

Einführung

Das System verwendet die Benutzertabelle, um die Attribute des Benutzers aufzuzeichnen, und jedes verwaltet die eigenen zugeordneten Daten des Benutzers. Einige Frontend-Seiten müssen auch je nach Identität unterschiedliche Inhaltsebenen anzeigen.

In dieser Ausgabe werden wir darüber sprechen, wie man normale Benutzer zu Administratoren hochstufen kann.

Datenvorbereitung

Wir hoffen, die Identität des Benutzers in der Benutzertabelle angeben zu können, z. B. ihn zum Administrator zu ernennen, damit mehr Datenressourcen angezeigt werden können.

Wir hängen ein Feld is_admin an die Benutzertabelle an, um den Administratorstatus des Benutzers zu markieren. Verwenden Sie den Befehl, um die Migrationsdatei zu erstellen:

php artisan make:migration add_is_admin_to_user_table --table=users复制代码

Füllen Sie zunächst die up-Methode für die Migrationsausführungslogik aus:

public function up(){
    Schema::table('users', function(Blueprint $table)    {
    	$table->boolean('is_admin')->default(false);
    });
}

Wenn die Die Migration schlägt fehl. Verwenden Sie die down-Methode für das Rollback:

public function down() 
{
    Schema::table('users', function(Blueprint $table)    {
    	$table->dropColumn('is_admin');
    }
}

Speichern Sie nach Abschluss der Bearbeitung und führen Sie die Migrationsanweisungen aus:

php artisan migrate复制代码

Zum Testen verwenden wir den MySQL-Client, um eine direkte Verbindung zur Datenbank herzustellen und manuell einen Administrator anzugeben. unter Verwendung der folgenden SQL-Anweisung:

update users set is_admin = true where email = 'admin@admin.com';

Routing

Um die Frontend-Seite von normalen Benutzern zu unterscheiden, verwenden wir den neuen Namespace Admin, um Administrator-bezogenen Code zu platzieren. Erstellen Sie zuerst den Controller:

php artisan make:controller Admin/UsersController复制代码

Fügen Sie dann die Route hinzu, bearbeiten Sie die Datei routes/web.php und fügen Sie den folgenden Inhalt hinzu:

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function(){
	Route::resource('user', 'UsersController');
});

Beachten Sie, dass wir zwei Schlüsselparameter verwenden,

  • Präfix: das heißt, innerhalb der Gruppe Allen Routing-Adressen wird das Präfix
  • namespace: namespace vorangestellt, was angibt, dass sich alle Controller in der Gruppe unter diesem Namespace befinden.

Controller

Im Routing im vorherigen Abschnitt haben wir das Ressourcenrouting mithilfe von Restful-Style-Deklarationen definiert. Erstellen Sie unten die Datei app/Http/Controllers/admin/UsersController.php und implementieren Sie die Indexmethode. Der Codeinhalt lautet wie folgt:

public function index(){
    $users = User::orderBy('created_at', 'desc')->get();    return view('admin.users.index')->withUsers($users);
}

Wir benötigen außerdem eine Ansichtsdatei, um die oben genannten Daten zu übertragen. Erstellen Sie das Verzeichnis resources/views/admin/users/index.blade.php und erstellen Sie einfach eine Vorlage:

<h1>Registered Users</h1>
<ul>
    @forelse ($users as $user)
    	<li>{{ $user->name }} ({{ $user->email }})</li>
    @empty
    	<li>No registered users</li>
    @endforelse
</ul>

展示的是所有用户的信息。这显然必须拥有较高的权限。所以我们在给数据之前,要识别用户是否管理员:

if (Auth::user()->is_admin != true) {	return redirect()->route('home')->withMessage('Access denied!');
}

如果不是就路由到首页。这样的判断,如果页面多了起来之后,每次都要在控制器内敲写,着实麻烦。所以,必须使用更靠前的验证,也就是 中间件

中间件

中间件可以注册给路由文件,在命中路由后,调用中间件进行身份识别,这是不错的选择。

使用命令行创建中间件文件:

php artisan make:middleware AdminAuthentication复制代码

生成的文件位于 app/Http/Middleware/ 目录下,编辑 AdminAuthentication 文件,并实现代码逻辑:

namespace App\Http\Middleware;use Closure;use Illuminate\Contracts\Auth\Guard;use Illuminate\Http\RedirectResponse;class AdminAuthentication {    public function handle($request, Closure $next)    {    	if ($request->user())
    	{    		if ($request->user()->is_admin == true)
    		{    			return $next($request);
    		}
    	}        // 验证不通过
        return new RedirectResponse(url('/'));
    }
}

然后在 app/Http/Kernel.php 文件内注册该中间件,并命名:

protected $routeMiddleware = [	'admin' => \App\Http\Middleware\AdminAuthentication::class,
];复制代码

修改 路由 一节中声明的路由组,引入中间件:

Route::group(
[    'prefix' => 'admin',    'namespace' => 'admin',    'middleware' => 'admin'], function(){
	Route::resource('users', 'UsersController');
});

写在最后

本文又是一个功能齐全却又mini小巧的短文,详细阐述了如何为users表添加管理员功能。

通过注册路由到中间件的使用,又一次体验了laravel各个组件协同作用的能力!


Das obige ist der detaillierte Inhalt vonErnennen Sie einen Administrator und erweitern Sie die Berechtigungen für normale Laravel-Benutzer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen