Директиви авторизації Blade для забезпечення безпеки перегляду

Перекладено ШІ 0 Laravel News 09 липня, 2025

Досліджуйте, як директиви авторизації Blade у Laravel можуть полегшити управління правами доступу у вашій програмі. Чи готові ви забезпечити відповідність між логікою відображення та авторизацією, щоб підвищити безпеку вашого інтерфейсу? Читайте далі, щоб дізнатися більше

Директиви авторизації Blade у Laravel чудово інтегруються з системою дозволів вашого застосунку, забезпечуючи чисте умовне рендерингування на основі можливостей користувача. Ці директиви підтримують узгодженість між авторизацією на бекенді та логікою відображення на фронтенді.

Blade пропонує три основні директиви авторизації для перевірки дозволів:

@can('edit', $article)
    <button class="edit-btn">Редагувати статтю</button>
@endcan

@cannot('delete', $article)
    <span class="text-muted">Видалення заборонено</span>
@endcannot

Директива @canany перевіряє кілька дозволів одночасно, що корисно в складних сценаріях авторизації.

@canany(['publish', 'schedule'], $article)
    <div class="publishing-controls">
        Доступні параметри публікації
    </div>
@endcanany

Ось приклад реалізації панелі управління, що демонструє різні шаблони авторизації:

<div class="dashboard-layout">
    <header class="dashboard-header">
        <h1>Управління контентом</h1>

        @canany(['create-posts', 'create-pages'])
            <div class="create-actions">
                @can('create-posts')
                    <a href="{{ route('posts.create') }}" class="btn btn-primary">Нова стаття</a>
                @endcan

                @can('create-pages')
                    <a href="{{ route('pages.create') }}" class="btn btn-secondary">Нова сторінка</a>
                @endcan
            </div>
        @endcanany
    </header>

    <main class="content-area">
        @foreach($articles as $article)
            <article class="content-card">
                <h2>{{ $article->title }}</h2>
                <p>{{ $article->excerpt }}</p>

                <div class="article-meta">
                    <span>Автор: {{ $article->author->name }}</span>
                    <span>{{ $article->published_at->diffForHumans() }}</span>
                </div>

                <div class="article-actions">
                    @can('update', $article)
                        <a href="{{ route('articles.edit', $article) }}" class="action-link">
                            Редагувати
                        </a>
                    @endcan

                    @can('publish', $article)
                        @if($article->is_draft)
                            <form method="POST" action="{{ route('articles.publish', $article) }}" class="inline-form">
                                @csrf
                                <button type="submit" class="publish-btn">Опублікувати</button>
                            </form>
                        @endif
                    @endcan

                    @cannot('delete', $article)
                        <span class="disabled-action">Видалення (захищено)</span>
                    @else
                        <form method="POST" action="{{ route('articles.destroy', $article) }}" class="inline-form">
                            @csrf
                            @method('DELETE')
                            <button type="submit" class="delete-btn" onclick="return confirm('Видалити цю статтю?')">
                                Видалити
                            </button>
                        </form>
                    @endcannot
                </div>
            </article>
        @endforeach
    </main>

    <aside class="sidebar">
        @canany(['view-analytics', 'manage-users', 'system-settings'])
            <div class="admin-panel">
                <h3>Адміністрування</h3>
                <ul class="admin-links">
                    @can('view-analytics')
                        <li><a href="{{ route('analytics.dashboard') }}">Аналітика</a></li>
                    @endcan

                    @can('manage-users')
                        <li><a href="{{ route('users.index') }}">Керування користувачами</a></li>
                    @endcan

                    @can('system-settings')
                        <li><a href="{{ route('settings.index') }}">Системні налаштування</a></li>
                    @endcan
                </ul>
            </div>
        @endcanany

        @guest
            <div class="login-prompt">
                <p>Будь ласка, <a href="{{ route('login') }}">увійдіть</a>, щоб отримати доступ до всіх функцій.</p>
            </div>
        @else
            @cannot('create-posts')
                <div class="upgrade-notice">
                    <p>Підвищте свій тарифний план, щоб створювати публікації.</p>
                    <a href="{{ route('plans.index') }}" class="upgrade-link">Переглянути плани</a>
                </div>
            @endcannot
        @endguest
    </aside>
</div>

Директиви авторизації гарантують, що елементи UI відповідають дозволам користувачів, створюючи безпечні та інтуїтивно зрозумілі інтерфейси, зменшуючи ризик несанкціонованого доступу до функціоналу

Популярні

Інше, що варто прочитати

14 Оновлено 01 червня, 2026

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

12 Оновлено 01 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою

173 Оновлено 01 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом