首页主机资讯centos中laravel如何实现认证授权

centos中laravel如何实现认证授权

时间2025-12-09 23:50:04发布访客分类主机资讯浏览784
导读:在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-passportlaravel-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
CentOS下Golang如何配置防火墙规则 centos laravel文件存储怎么设置

游客 回复需填写必要信息