diff --git a/Yesod/Auth.hs b/Yesod/Auth.hs
--- a/Yesod/Auth.hs
+++ b/Yesod/Auth.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE ViewPatterns #-}
 {-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE DefaultSignatures #-}
 {-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell #-}
@@ -160,8 +161,20 @@
     -- Since 1.2.0
     maybeAuthId :: HandlerT master IO (Maybe (AuthId master))
 
+#if MIN_VERSION_persistent(2, 0, 0)
     default maybeAuthId
         :: ( YesodAuth master
+           , PersistEntityBackend val ~ YesodPersistBackend master
+           , Key val ~ AuthId master
+           , PersistStore (PersistEntityBackend val)
+           , PersistEntity val
+           , YesodPersist master
+           , Typeable val
+           )
+        => HandlerT master IO (Maybe (AuthId master))
+#else
+    default maybeAuthId
+        :: ( YesodAuth master
            , PersistMonadBackend (b (HandlerT master IO)) ~ PersistEntityBackend val
            , b ~ YesodPersistBackend master
            , Key val ~ AuthId master
@@ -171,6 +184,7 @@
            , Typeable val
            )
         => HandlerT master IO (Maybe (AuthId master))
+#endif
     maybeAuthId = defaultMaybeAuthId
 
     -- | Called on login error for HTTP requests. By default, calls
@@ -192,8 +206,20 @@
 -- 'maybeAuthIdRaw' for more information.
 --
 -- Since 1.1.2
+#if MIN_VERSION_persistent(2, 0, 0)
 defaultMaybeAuthId
           :: ( YesodAuth master
+             , b ~ YesodPersistBackend master
+             , b ~ PersistEntityBackend val
+             , Key val ~ AuthId master
+             , PersistStore b
+             , PersistEntity val
+             , YesodPersist master
+             , Typeable val
+             ) => HandlerT master IO (Maybe (AuthId master))
+#else
+defaultMaybeAuthId
+          :: ( YesodAuth master
              , PersistMonadBackend (b (HandlerT master IO)) ~ PersistEntityBackend val
              , b ~ YesodPersistBackend master
              , Key val ~ AuthId master
@@ -202,6 +228,7 @@
              , YesodPersist master
              , Typeable val
              ) => HandlerT master IO (Maybe (AuthId master))
+#endif
 defaultMaybeAuthId = do
     ms <- lookupSession credsKey
     case ms of
@@ -211,7 +238,18 @@
                 Nothing -> return Nothing
                 Just aid -> fmap (fmap entityKey) $ cachedAuth aid
 
+#if MIN_VERSION_persistent(2, 0, 0)
 cachedAuth :: ( YesodAuth master
+             , b ~ YesodPersistBackend master
+             , b ~ PersistEntityBackend val
+             , Key val ~ AuthId master
+             , PersistStore b
+             , PersistEntity val
+             , YesodPersist master
+             , Typeable val
+             ) => AuthId master -> HandlerT master IO (Maybe (Entity val))
+#else
+cachedAuth :: ( YesodAuth master
              , PersistMonadBackend (b (HandlerT master IO)) ~ PersistEntityBackend val
              , b ~ YesodPersistBackend master
              , Key val ~ AuthId master
@@ -220,6 +258,7 @@
              , YesodPersist master
              , Typeable val
              ) => AuthId master -> HandlerT master IO (Maybe (Entity val))
+#endif
 cachedAuth aid = runMaybeT $ do
     a <- MaybeT $ fmap unCachedMaybeAuth
                 $ cached
@@ -372,7 +411,18 @@
 -- assumes that you are using a Persistent database.
 --
 -- Since 1.1.0
+#if MIN_VERSION_persistent(2, 0, 0)
 maybeAuth :: ( YesodAuth master
+             , b ~ YesodPersistBackend master
+             , b ~ PersistEntityBackend val
+             , Key val ~ AuthId master
+             , PersistStore b
+             , PersistEntity val
+             , YesodPersist master
+             , Typeable val
+             ) => HandlerT master IO (Maybe (Entity val))
+#else
+maybeAuth :: ( YesodAuth master
              , PersistMonadBackend (b (HandlerT master IO)) ~ PersistEntityBackend val
              , b ~ YesodPersistBackend master
              , Key val ~ AuthId master
@@ -381,6 +431,7 @@
              , YesodPersist master
              , Typeable val
              ) => HandlerT master IO (Maybe (Entity val))
+#endif
 maybeAuth = runMaybeT $ do
     aid <- MaybeT maybeAuthId
     MaybeT $ cachedAuth aid
@@ -394,8 +445,20 @@
 -- full informatin on a given user.
 --
 -- Since 1.2.0
+#if MIN_VERSION_persistent(2, 0, 0)
 type YesodAuthPersist master =
     ( YesodAuth master
+    , YesodPersistBackend master
+        ~ PersistEntityBackend (AuthEntity master)
+    , Key (AuthEntity master) ~ AuthId master
+    , PersistStore (YesodPersistBackend master)
+    , PersistEntity (AuthEntity master)
+    , YesodPersist master
+    , Typeable (AuthEntity master)
+    )
+#else
+type YesodAuthPersist master =
+    ( YesodAuth master
     , PersistMonadBackend (YesodPersistBackend master (HandlerT master IO))
         ~ PersistEntityBackend (AuthEntity master)
     , Key (AuthEntity master) ~ AuthId master
@@ -404,6 +467,7 @@
     , YesodPersist master
     , Typeable (AuthEntity master)
     )
+#endif
 
 -- | If the @AuthId@ for a given site is a persistent ID, this will give the
 -- value for that entity. E.g.:
@@ -413,6 +477,10 @@
 --
 -- Since 1.2.0
 type AuthEntity master = KeyEntity (AuthId master)
+#if MIN_VERSION_persistent(2, 0, 0)
+type family KeyEntity key
+type instance KeyEntity (Key x) = x
+#endif
 
 -- | Similar to 'maybeAuthId', but redirects to a login page if user is not
 -- authenticated.
diff --git a/yesod-auth.cabal b/yesod-auth.cabal
--- a/yesod-auth.cabal
+++ b/yesod-auth.cabal
@@ -1,5 +1,5 @@
 name:            yesod-auth
-version:         1.3.4.2
+version:         1.3.4.3
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman, Patrick Brisbin
@@ -45,10 +45,10 @@
                    , unordered-containers
                    , yesod-form              >= 1.3       && < 1.4
                    , transformers            >= 0.2.2
-                   , persistent              >= 1.2       && < 1.4
-                   , persistent-template     >= 1.2       && < 1.4
+                   , persistent              >= 1.2       && < 2.1
+                   , persistent-template     >= 1.2       && < 2.1
                    , http-conduit            >= 1.5
-                   , aeson                   >= 0.5
+                   , aeson                   >= 0.7
                    , lifted-base             >= 0.1
                    , blaze-html              >= 0.5
                    , blaze-markup            >= 0.5.1
