authenticate_user!メソッドはログイン状態によって表示するページを切り替えるメソッドでdeviseをインストールをすることで使用できます。
通常はbefore_actiontiと一緒に利用しアクションを実行する前にログインしていなければログイン画面に遷移させられます。
ただindexページ、詳細ページ、検索機能などはログインしていなくても見れる状態にしたいというのがあるので
before_action :authenticate_user!, except: [:index, :show, :search]
のようにexcept: [:index, :show, :search]をつけてあげればindex,show,searchアクションは除かれるのでログインしていなくても遷移させられることはありません。