Комментарий с Auth в laravel

Я хочу, чтобы пользователь оставил комментарий только после входа в систему. В противном случае появится сообщение «Вы должны войти в систему, чтобы оставить комментарий». Если я вошел в систему, он работает, если нет, он просто перенаправляет обратно! Я решил это. Проблема заключалась в том, что PostCommentsController находился в промежуточном программном обеспечении администратора, где вы должны войти в систему, чтобы узнать, являетесь ли вы администратором. А если вы не авторизовались, перенаправьте на index.

Контроллер:

public function store(Request $request)
{
    if (Auth::check()) {
        $user = Auth::user();
        $data = [
            'post_id' => $request->post_id,
            'author' => $user->name,
            'email' => $user->email,
            'body' => $request->body
        ];
        
        Comment::create($data); 
        $request->session()->flash('comment_success','Your comment have been submited and is waiting moderation');
        return redirect()->back();
    } else {            
        $request->session()->flash('login','You must be logged in to post a comment');
        return redirect('/login')->back();
    }       
}

Я просто хочу уточнить, если пользователь не вошел в систему, пользователь перенаправляется на страницу входа, верно?

aceraven777 31.05.2018 07:56

Да, у меня есть плюс -> назад () в моем заявлении else. Поэтому я изменил обратное перенаправление ('/ login'); Но не работает. Если я не авторизован, перенаправьте обратно на страницу индекса, где есть несколько сообщений.

csow 31.05.2018 12:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
425
3

Ответы 3

public function store(Request $request)
{
    if (!Auth::check()) { 
        $request->session()->flash('login', 'You must be logged in to post a comment');
        return redirect()->back();
    }

    $user = Auth::user();
    $data = [
        'post_id' => $request->post_id,
        'author' => $user->name,
        'email' => $user->email,
        'body' => $request->body
    ];

    if (Comment::create($data)) {
        $request->session()->flash('comment_success', 'Your comment have been submitted and is waiting moderation');
        return redirect()->back(); 
    } 

    $request->session()->flash('comment_error', 'Your comment does not submited. Try again!!');
    return redirect()->back();
}

куда вы не перенаправляете ??

Davit 31.05.2018 13:05

посмотреть все доступные методы в https://laravel.com/docs/5.5/responses

Davit 31.05.2018 13:08

Неважно, куда я хочу перенаправить (пробовал / авторизоваться, зарегистрироваться). Если я не авторизован, всегда перенаправляйте на страницу индекса. И флеш-сообщение тоже не появляется (вы должны войти в систему, чтобы оставить комментарий)

csow 31.05.2018 13:15

используйте https://github.com/laracasts/flash для простого отображения сообщения плоти

Davit 31.05.2018 13:20

В вашем операторе else просто используйте этот код return redirect('/login');, используя функцию back(), которая перенаправит пользователя обратно.

Laravel имеет встроенную систему Auth, если вы ее используете, вы можете использовать конструкторы, подобные примеру из моего проекта.

public function __construct()
{
    $this->middleware('auth');
}

Это просто говорит о том, что пользователь не может получить доступ ни к одному из методов в этом классе без входа в систему. Если они не вошли в систему, он перенаправит их обратно на страницу входа. Вы также можете иметь в своих представлениях @auth и @guest. Я использую это, чтобы показать информацию о личной информации, например. частные серверы могут видеть только зарегистрированные пользователи.

Если у вас есть другие вопросы, на которые я могу ответить, дайте мне знать, я буду рад помочь!

https://laravel.com/docs/5.6/authentication

Другие вопросы по теме