diff --git a/lib/middleware/AuthenticationMiddleware.php b/lib/middleware/AuthenticationMiddleware.php
index 739ce894261ac9838e5daff5cfd9577e3ade7479..f86b06730f0475d82e53927fa25b026735a7b6a0 100644
--- a/lib/middleware/AuthenticationMiddleware.php
+++ b/lib/middleware/AuthenticationMiddleware.php
@@ -32,7 +32,9 @@ final class AuthenticationMiddleware implements MiddlewareInterface
         if ($this->auth_manager->start()) {
             return $handler->handle($request);
         } else {
-            $_SESSION['redirect_after_login'] = \Request::url();
+            if (!match_route('dispatch.php/start')) {
+                $_SESSION['redirect_after_login'] = \Request::url();
+            }
             $response = $this->response_factory->createResponse(302);
             return $response->withHeader('Location', \URLHelper::getURL('dispatch.php/login'));
         }
diff --git a/lib/middleware/SeminarOpenMiddleware.php b/lib/middleware/SeminarOpenMiddleware.php
index 108e0edbf3e604a41bb48d5ab03e2e78ac4178d3..20d7f9e1f75c41ae48d248f4e47abce12d5ae54f 100644
--- a/lib/middleware/SeminarOpenMiddleware.php
+++ b/lib/middleware/SeminarOpenMiddleware.php
@@ -61,6 +61,7 @@ final class SeminarOpenMiddleware implements MiddlewareInterface
                 $jump_page = 'dispatch.php/contents/overview';
                 break;
         }
+
         $response = $this->response_factory->createResponse(302);
         return $response->withHeader('Location', \URLHelper::getURL($jump_page));
     }
@@ -97,10 +98,7 @@ final class SeminarOpenMiddleware implements MiddlewareInterface
 
         // user init starts here
         if (is_object($user) && $user->id != "nobody") {
-            if ($_SESSION['SessionStart'] > \UserConfig::get(
-                    $user->id
-                )->CURRENT_LOGIN_TIMESTAMP
-            ) {      // just logged in
+            if ($_SESSION['SessionStart'] > \UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP) {      // just logged in
                 // store old CURRENT_LOGIN in LAST_LOGIN and set CURRENT_LOGIN to start of session
                 \UserConfig::get($user->id)->store(
                     'LAST_LOGIN_TIMESTAMP', \UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP
@@ -110,10 +108,10 @@ final class SeminarOpenMiddleware implements MiddlewareInterface
                 $current_sem = \Semester::findDefault();
                 $_SESSION['_default_sem'] = $current_sem->semester_id ?? null;
                 //redirect user to another page if he want to, redirect is deferred to allow plugins to catch the UserDidLogin notification
-                if (\UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0 && !isset($_SESSION['redirect_after_login'])
-                    && !$perm->have_perm(
-                        "root"
-                    )
+                if (
+                    \UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0
+                    && !isset($_SESSION['redirect_after_login'])
+                    && !$perm->have_perm('root')
                 ) {
                     $seminar_open_redirected = true;
                 }
@@ -247,11 +245,12 @@ final class SeminarOpenMiddleware implements MiddlewareInterface
         }
 
         if ($seminar_open_redirected) {
-            $this->startpageRedirect(\UserConfig::get($user->id)->PERSONAL_STARTPAGE);
+            return $this->startpageRedirect(\UserConfig::get($user->id)->PERSONAL_STARTPAGE);
         }
 
         // Show terms on first login
-        if (is_object($GLOBALS['user'])
+        if (
+            is_object($GLOBALS['user'])
             && $GLOBALS['user']->needsToAcceptTerms()
             && !match_route('dispatch.php/terms')
             && !match_route('dispatch.php/siteinfo/*')