diff --git a/scipost_django/scipost/views.py b/scipost_django/scipost/views.py
index bd5fefbebcb2cf0b6fa171dd89092f3d2cf18d82..6808395e23919ca004acece8f3f39bf4f1afdbb1 100644
--- a/scipost_django/scipost/views.py
+++ b/scipost_django/scipost/views.py
@@ -2,7 +2,7 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
-import json
+import urllib
 
 from django.utils import timezone
 from django.shortcuts import get_object_or_404, render
@@ -882,6 +882,15 @@ class SciPostLoginView(LoginView):
             return reverse_lazy("scipost:index")
 
 
+def prompt_to_login(request):
+    """Prompt to login before viewing the requested page."""
+    return redirect(
+        reverse("scipost:login")
+        + "?next="
+        + urllib.parse.quote(request.get_full_path())
+    )
+
+
 def raw_user_auth_info(request):
     form = UserAuthInfoForm(request.POST or None)
 
diff --git a/scipost_django/submissions/views/__init__.py b/scipost_django/submissions/views/__init__.py
index c3bd354ce24a3715467466929ce23e483e5de721..d68edfd83ea678ac0c006f30f612638bedc8e8bc 100644
--- a/scipost_django/submissions/views/__init__.py
+++ b/scipost_django/submissions/views/__init__.py
@@ -122,7 +122,7 @@ from scipost.decorators import is_contributor_user
 from scipost.forms import RemarkForm, SearchTextForm
 from scipost.mixins import PaginationMixin, PermissionsMixin
 from scipost.models import Contributor, Remark
-
+from scipost.views import prompt_to_login
 
 ################
 # Autocomplete #
@@ -616,12 +616,13 @@ def submission_detail(request, identifier_w_vn_nr):
 
     if not submission.visible_public and not is_author:
         if not request.user.is_authenticated:
-            raise Http404
+            return prompt_to_login(request)
+
         elif (
             not request.user.has_perm("scipost.can_assign_submissions")
             and not submission.fellows.filter(contributor__user=request.user).exists()
         ):
-            raise Http404
+            raise PermissionDenied()
 
     if is_author:
         context["proofs_decision_form"] = ProofsDecisionForm()