Я хочу, чтобы пользователь оставил комментарий только после входа в систему. В противном случае появится сообщение «Вы должны войти в систему, чтобы оставить комментарий». Если я вошел в систему, он работает, если нет, он просто перенаправляет обратно! Я решил это. Проблема заключалась в том, что 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();
}
}
Да, у меня есть плюс -> назад () в моем заявлении else. Поэтому я изменил обратное перенаправление ('/ login'); Но не работает. Если я не авторизован, перенаправьте обратно на страницу индекса, где есть несколько сообщений.






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();
}
куда вы не перенаправляете ??
посмотреть все доступные методы в https://laravel.com/docs/5.5/responses
Неважно, куда я хочу перенаправить (пробовал / авторизоваться, зарегистрироваться). Если я не авторизован, всегда перенаправляйте на страницу индекса. И флеш-сообщение тоже не появляется (вы должны войти в систему, чтобы оставить комментарий)
используйте https://github.com/laracasts/flash для простого отображения сообщения плоти
В вашем операторе else просто используйте этот код return redirect('/login');, используя функцию back(), которая перенаправит пользователя обратно.
Laravel имеет встроенную систему Auth, если вы ее используете, вы можете использовать конструкторы, подобные примеру из моего проекта.
public function __construct()
{
$this->middleware('auth');
}
Это просто говорит о том, что пользователь не может получить доступ ни к одному из методов в этом классе без входа в систему. Если они не вошли в систему, он перенаправит их обратно на страницу входа. Вы также можете иметь в своих представлениях @auth и @guest. Я использую это, чтобы показать информацию о личной информации, например. частные серверы могут видеть только зарегистрированные пользователи.
Если у вас есть другие вопросы, на которые я могу ответить, дайте мне знать, я буду рад помочь!
Я просто хочу уточнить, если пользователь не вошел в систему, пользователь перенаправляется на страницу входа, верно?