centos中laravel如何实现认证授权
导读:在CentOS系统中使用Laravel框架实现认证和授权,可以遵循以下步骤: 1. 安装Laravel 首先,确保你已经安装了Laravel。如果还没有安装,可以使用Composer来创建一个新的Laravel项目: composer cr...
在CentOS系统中使用Laravel框架实现认证和授权,可以遵循以下步骤:
1. 安装Laravel
首先,确保你已经安装了Laravel。如果还没有安装,可以使用Composer来创建一个新的Laravel项目:
composer create-project --prefer-dist laravel/laravel your_project_name
2. 配置数据库
编辑.env文件,配置你的数据库连接信息:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_database_password
然后运行迁移命令来创建数据库表:
php artisan migrate
3. 安装认证包
Laravel自带的认证系统已经非常完善,通常不需要额外安装。如果你需要自定义认证逻辑,可以考虑使用第三方包,如laravel-passport或laravel-sanctum。
使用Laravel Sanctum进行API认证
如果你正在构建一个API,可以使用Laravel Sanctum:
composer require laravel/sanctum
然后运行迁移命令来创建必要的表:
php artisan migrate
在config/auth.php中配置Sanctum:
'guards' =>
[
'sanctum' =>
[
'driver' =>
'sanctum',
'provider' =>
'users',
],
],
4. 实现认证
Laravel提供了多种方式来实现用户认证,包括表单登录、API令牌认证等。
表单登录
在routes/web.php中添加路由:
Route::get('/login', 'Auth\LoginController@showLoginForm')->
name('login');
Route::post('/login', 'Auth\LoginController@login');
Route::post('/logout', 'Auth\LoginController@logout')->
name('logout');
创建登录视图文件resources/views/auth/login.blade.php:
@extends('layouts.app')
@section('content')
<
div class="container">
<
div class="row justify-content-center">
<
div class="col-md-8">
<
div class="card">
<
div class="card-header">
{
{
__('Login') }
}
<
/div>
<
div class="card-body">
<
form method="POST" action="{
{
route('login') }
}
">
@csrf
<
div class="form-group row mb-0">
<
div class="col-md-6 offset-md-4">
<
div class="form-control{
{
$errors->
has('email') ? ' is-invalid' : '' }
}
" id="email" type="email" value="{
{
old('email') }
}
" required autofocus>
@if ($errors->
has('email'))
<
span class="invalid-feedback">
<
strong>
{
{
$errors->
first('email') }
}
<
/strong>
<
/span>
@endif
<
/div>
<
/div>
<
/div>
<
div class="form-group row mb-0">
<
div class="col-md-6 offset-md-4">
<
div class="form-control{
{
$errors->
has('password') ? ' is-invalid' : '' }
}
" id="password" type="password">
@if ($errors->
has('password'))
<
span class="invalid-feedback">
<
strong>
{
{
$errors->
first('password') }
}
<
/strong>
<
/span>
@endif
<
/div>
<
/div>
<
/div>
<
div class="form-group row mb-0">
<
div class="col-md-6 offset-md-4">
<
div class="form-check">
<
input class="form-check-input" type="checkbox" name="remember" id="remember" {
{
old('remember') ? 'checked' : '' }
}
>
<
label class="form-check-label" for="remember">
{
{
__('Remember Me') }
}
<
/label>
<
/div>
<
/div>
<
/div>
<
div class="form-group row mb-0">
<
div class="col-md-8 offset-md-4">
<
button type="submit" class="btn btn-primary">
{
{
__('Login') }
}
<
/button>
<
a class="btn btn-secondary" href="{
{
route('password.request') }
}
">
{
{
__('Forgot Your Password?') }
}
<
/a>
<
/div>
<
/div>
<
/form>
<
/div>
<
/div>
<
/div>
<
/div>
<
/div>
@endsection
API令牌认证
在routes/api.php中添加路由:
Route::post('/login', 'Auth\LoginController@login');
Route::post('/logout', 'Auth\LoginController@logout')->
middleware('auth:sanctum');
Route::middleware('auth:sanctum')->
get('/user', function (Request $request) {
return $request->
user();
}
);
5. 实现授权
Laravel提供了多种授权机制,包括角色基础访问控制(RBAC)、策略等。
角色基础访问控制(RBAC)
使用第三方包如spatie/laravel-permission来实现RBAC:
composer require spatie/laravel-permission
然后运行迁移命令来创建必要的表:
php artisan migrate
在config/auth.php中配置权限:
'providers' =>
[
'users' =>
[
'driver' =>
'eloquent',
'model' =>
App\Models\User::class,
],
'permission' =>
[
'driver' =>
'eloquent',
'model' =>
Spatie\Permission\Models\Role::class,
],
],
创建角色和权限:
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
Role::create(['name' =>
'writer']);
Role::create(['name' =>
'editor']);
Permission::create(['name' =>
'edit articles']);
Permission::create(['name' =>
'delete articles']);
$writer = Role::findByName('writer');
$writer->
givePermissionTo('edit articles');
在控制器中使用授权:
use Illuminate\Http\Request;
use Spatie\Permission\Traits\HasRoles;
class ArticleController extends Controller
{
use HasRoles;
public function edit(Article $article)
{
$this->
authorize('edit', $article);
// 编辑逻辑
}
public function delete(Article $article)
{
$this->
authorize('delete', $article);
// 删除逻辑
}
}
通过以上步骤,你可以在CentOS系统中使用Laravel实现认证和授权。根据具体需求选择合适的认证和授权方式,并进行相应的配置和实现。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos中laravel如何实现认证授权
本文地址: https://pptw.com/jishu/767668.html
