diff --git a/Yesod/Auth.hs b/Yesod/Auth.hs
--- a/Yesod/Auth.hs
+++ b/Yesod/Auth.hs
@@ -18,6 +18,7 @@
       -- * Plugin interface
     , Creds (..)
     , setCreds
+    , clearCreds
       -- * User functions
     , defaultMaybeAuthId
     , maybeAuth
@@ -163,7 +164,11 @@
 /page/#Text/STRINGS PluginR
 |]
 
-setCreds :: YesodAuth master => Bool -> Creds master -> GHandler sub master ()
+-- | Sets user credentials for the session after checking them with authentication backends.
+setCreds :: YesodAuth master
+         => Bool         -- ^ if HTTP redirects should be done
+         -> Creds master -- ^ new credentials
+         -> GHandler sub master ()
 setCreds doRedirects creds = do
     y    <- getYesod
     maid <- getAuthId creds
@@ -184,6 +189,19 @@
               onLogin
               redirectUltDest $ loginDest y
 
+-- | Clears current user credentials for the session.
+--
+-- Since 1.1.7
+clearCreds :: YesodAuth master
+           => Bool -- ^ if HTTP redirect to 'logoutDest' should be done
+           -> GHandler sub master ()
+clearCreds doRedirects = do
+    y <- getYesod
+    deleteSession credsKey
+    when doRedirects $ do
+        onLogout
+        redirectUltDest $ logoutDest y
+
 getCheckR :: YesodAuth master => GHandler Auth master RepHtmlJson
 getCheckR = do
     creds <- maybeAuthId
@@ -219,11 +237,7 @@
     setUltDestReferer' >> redirectToPost (tm LogoutR)
 
 postLogoutR :: YesodAuth master => GHandler Auth master ()
-postLogoutR = do
-    y <- getYesod
-    deleteSession credsKey
-    onLogout
-    redirectUltDest $ logoutDest y
+postLogoutR = clearCreds True
 
 handlePluginR :: YesodAuth master => Text -> [Text] -> GHandler Auth master ()
 handlePluginR plugin pieces = do
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.1.6
+version:         1.1.7
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman, Patrick Brisbin
