anchor.diff:  
     (defmacro require-login (&body body)
       "Redirects to /login if not logged in."
  -    (handle-no-user body
  -                    `((with-session-values (next-page) (context :session)
  -                        (setf next-page (lack.request:request-path-info *request*))
  -                        '(302 (:location "/login")))))))
  +    (handle-no-user
  +      body
  +      `((save-redirect (lack.request:request-path-info *request*))
  +        '(302 (:location "/login"))))))
   
   (defmacro redirect-if-necessary (sessionvar &body body)
     (with-gensyms (session)
  
positive.code:   (alexandria:with-gensyms (session userinfo)
      `(my-with-context-variables ((,session session))
         (with-session-values ((,userinfo userinfo)) ,session
           (handler-case
             (if (null ,userinfo)
               (error 'user-not-logged-in)
               (progn ,@body))
             (error (c)
               (setf ,userinfo nil)
               (error c)))))))
  
  (defmacro setup-oid-connect (app args &body callback)
    `(cl-oid-connect::bind-oid-connect-routes ,app (lambda ,args ,@callback)))
  
  (flet ((handle-no-user (main-body handler-body)
           `(handler-case (ensure-logged-in ,@main-body)
  
negative.code:          (lambda ,args
             (declare (ignorable ,@args))
             ,@body)))
  
  (defun gen-state (len)
    (with-output-to-string (stream)
      (let ((*print-base* 36))
  