[#8140] reset current session id during password reset, so even a theoretical shared copy of the session wouldn't stay valid either
diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py
index 932f106..284f750 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -23,7 +23,6 @@
 
 import bson
 import tg
-from allura.lib.exceptions import InvalidRecoveryCode, MultifactorRateLimitError
 from tg import expose, flash, redirect, validate, config, session
 from tg.decorators import with_trailing_slash, without_trailing_slash
 from pylons import tmpl_context as c, app_globals as g
@@ -31,6 +30,7 @@
 from webob import exc as wexc
 from paste.deploy.converters import asbool
 from cryptography.hazmat.primitives.twofactor import InvalidToken
+from beaker.session import _session_id
 
 import allura.tasks.repo_tasks
 from allura import model as M
@@ -39,6 +39,7 @@
 from allura.lib import helpers as h
 from allura.lib import plugin
 from allura.lib.decorators import require_post, reconfirm_auth
+from allura.lib.exceptions import InvalidRecoveryCode, MultifactorRateLimitError
 from allura.lib.repository import RepositoryApp
 from allura.lib.widgets import (
     SubscriptionForm,
@@ -640,6 +641,8 @@
         ap = plugin.AuthenticationProvider.get(request)
         try:
             ap.set_password(c.user, kw['oldpw'], kw['pw'])
+            session['_id'] = _session_id()  # new one so even if this session had been intercepted somehow, its invalid
+            session.save()
             c.user.set_tool_data('allura', pwd_reset_preserve_session=session.id)
             c.user.set_tool_data('AuthPasswordReset', hash='', hash_expiry='')