diff --git a/github-oauth/src/main/java/com/google/gerrit/httpd/XGerritAuth.java b/github-oauth/src/main/java/com/google/gerrit/httpd/XGerritAuth.java
index 25a308e..69a40ca 100644
--- a/github-oauth/src/main/java/com/google/gerrit/httpd/XGerritAuth.java
+++ b/github-oauth/src/main/java/com/google/gerrit/httpd/XGerritAuth.java
@@ -15,9 +15,11 @@
 
 import javax.servlet.http.Cookie;
 
+import com.google.common.cache.Cache;
 import com.google.gerrit.httpd.WebSessionManager.Val;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import com.google.inject.name.Named;
 
 @Singleton
 public class XGerritAuth {
@@ -25,12 +27,14 @@
   private WebSessionManager manager;
 
   @Inject
-  public XGerritAuth(WebSessionManager manager) {
-    this.manager = manager;
+  public XGerritAuth(WebSessionManagerFactory managerFactory,
+      @Named(WebSessionManager.CACHE_NAME) Cache<String, Val> cache) {
+    this.manager = managerFactory.create(cache);
   }
-  
+
   public String getAuthValue(Cookie gerritCookie) {
-    Val session = manager.get(new WebSessionManager.Key(gerritCookie.getValue()));
+    Val session =
+        manager.get(new WebSessionManager.Key(gerritCookie.getValue()));
     return session.getAuth();
   }
 }
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthGitFilter.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthGitFilter.java
index 326ad23..cd8b32e 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthGitFilter.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthGitFilter.java
@@ -115,17 +115,17 @@
   @Inject
   public OAuthGitFilter(OAuthCache oauthCache, AccountCache accountCache,
       GitHubHttpProvider httpClientProvider, GitHubOAuthConfig config,
-      XGerritAuth xGerritAuth) {
+      XGerritAuth xGerritAuth, GitHubLogin.Provider ghLoginProvider) {
     this.oauthCache = oauthCache;
     this.accountCache = accountCache;
     this.httpClientProvider = httpClientProvider;
     this.config = config;
     this.xGerritAuth = xGerritAuth;
+    this.ghLoginProvider = ghLoginProvider;
   }
 
   @Override
   public void init(FilterConfig filterConfig) throws ServletException {
-    this.ghLoginProvider = new GitHubLogin.Provider();
   }
 
   @Override
@@ -142,22 +142,21 @@
     String username =
         getAuthenticatedUserFromGitRequestUsingOAuthToken(httpRequest,
             httpResponse);
-    if (username == null) {
-      return;
-    }
-    String gerritPassword =
-        accountCache.getByUsername(username).getPassword(username);
+    if (username != null) {
+      String gerritPassword =
+          accountCache.getByUsername(username).getPassword(username);
 
-    if (gerritPassword == null) {
-      gerritPassword =
-          generateRandomGerritPassword(username, httpRequest, httpResponse,
-              chain);
-      httpResponse.sendRedirect(getRequestPathWithQueryString(httpRequest));
-      return;
-    }
+      if (gerritPassword == null) {
+        gerritPassword =
+            generateRandomGerritPassword(username, httpRequest, httpResponse,
+                chain);
+        httpResponse.sendRedirect(getRequestPathWithQueryString(httpRequest));
+        return;
+      }
 
-    httpRequest =
-        new BasicAuthHttpRequest(httpRequest, username, gerritPassword);
+      httpRequest =
+          new BasicAuthHttpRequest(httpRequest, username, gerritPassword);
+    }
 
     chain.doFilter(httpRequest, httpResponse);
   }
