<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="132581" data-post-id="132581">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="danschultzer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/120/4942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  danschultzer
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Pow Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You can <a href="https://github.com/danschultzer/pow/blob/82c3359ec757a139fe38f4a745c3da176425f901/lib/pow/ecto/schema.ex#L35" rel="noopener nofollow ugc">easily change the user id field</a> like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Users.User do
  use Ecto.Schema
  use Pow.Ecto.Schema, user_id_field: :username

  # ...
end
</code></pre>
<p>Only caveat is that the user id field should always be unique, since it’s used to sign in.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="132581" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/133">Post #132</a>
	                </div>
	            </div>
              <div id="likers-container-132581" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="132581"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #132"></div>
  </section>
</div>
    <div class="postbit" id="132610" data-post-id="132610">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Well I would like to sign in with email. Just have temporary (thowaway) accounts without email (but a unique ID). At the end of a game a user could provide them email to turn the account into a real one, or the account will be deleted by a scheduled task. There would be no sign in with such an account.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="132610" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/134">Post #133</a>
	                </div>
	            </div>
              <div id="likers-container-132610" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="132610"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #133"></div>
  </section>
</div>
    <div class="postbit" id="132615" data-post-id="132615">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="outlog" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  outlog
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>what I usually do in that case is to have the system generate random_id@anon_user.mydomain.com - and then the client/frontend handles not showing that it technically is an email.. and being able to login with random_id/password etc etc.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="132615" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/135">Post #134</a>
	                </div>
	            </div>
              <div id="likers-container-132615" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="132615"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #134"></div>
  </section>
</div>
    <div class="postbit" id="132619" data-post-id="132619">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>That could actually be simpler <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="132619" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/136">Post #135</a>
	                </div>
	            </div>
              <div id="likers-container-132619" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="132619"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #135"></div>
  </section>
</div>
    <div class="postbit" id="132628" data-post-id="132628">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="danschultzer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/120/4942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  danschultzer
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Pow Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, what <a class="mention" href="/u/outlog" rel="nofollow">@outlog</a> suggests is the best since the email user id would have to be present and unique. Pow is flexible enough to do what you initially wanted to do, but I don’t think it would be worth it <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="132628" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/137">Post #136</a>
	                </div>
	            </div>
              <div id="likers-container-132628" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="132628"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #136"></div>
  </section>
</div>
    <div class="postbit" id="139065" data-post-id="139065">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="seanwash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/seanwash/120/1847_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  seanwash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’d love to see this too - I converted from coherence and was using their database session storage solution since I’m on Heroku. Right now I’m bypassing the session store altogether by using a custom <a href="https://github.com/danschultzer/pow#authorization-plug" rel="noopener nofollow ugc">authorization plug</a>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="139065" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/138">Post #137</a>
	                </div>
	            </div>
              <div id="likers-container-139065" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="139065"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #137"></div>
  </section>
</div>
    <div class="postbit" id="139365" data-post-id="139365">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="danschultzer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/120/4942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  danschultzer
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Pow Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>For an ecto based cache store, you could leverage foreign keys. I would probably have namespace, key, value, user_id (optional), and expiration columns, and set up invalidator job to clean out expired keys periodically. But be warned, the stores are built to be simple key-value store, so SQL DB isn’t really the right tool.</p>
<p>As an example, when a new session is created, two keys are created/updated, one for the session id, and one for the user. The session id key just contains the key for the user. The user key contains the cached user data and list of session id’s. When a session id is fetched, the user will be fetched from the user key. Could maybe be handled with some pattern matching (e.g. using the namespace value to differentiate) so foreign key can be leveraged.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="139365" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/139">Post #138</a>
	                </div>
	            </div>
              <div id="likers-container-139365" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="139365"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #138"></div>
  </section>
</div>
    <div class="postbit" id="140290" data-post-id="140290">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="danschultzer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/120/4942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  danschultzer
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Pow Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h3><a name="p-140290-pow-1012-released-1" class="anchor" href="#p-140290-pow-1012-released-1" aria-label="Heading link" rel="nofollow"></a>Pow 1.0.12 released</h3>
<p>Changelog: <a href="https://github.com/danschultzer/pow/blob/v1.0.12/CHANGELOG.md#v1012-2019-08-16" rel="noopener nofollow ugc">Github </a><br>
Hex: <a href="https://hex.pm/packages/pow/1.0.12" rel="nofollow">https://hex.pm/packages/pow/1.0.12 </a></p>
<h4><a name="p-140290-out-of-the-box-distribution-2" class="anchor" href="#p-140290-out-of-the-box-distribution-2" aria-label="Heading link" rel="nofollow"></a>Out-of-the-box distribution</h4>
<p>The Mnesia cache backend can now auto join clusters, and <code>Pow.Store.Backend.MnesiaCache.Unsplit</code> can be used to automatically self-heal if network splits occurs.</p>
<p>Read more in the docs:<br>
<a href="https://hexdocs.pm/pow/1.0.12/Pow.Store.Backend.MnesiaCache.html#module-distribution" rel="noopener nofollow ugc">https://hexdocs.pm/pow/1.0.12/Pow.Store.Backend.MnesiaCache.html</a><br>
<a href="https://hexdocs.pm/pow/1.0.12/Pow.Store.Backend.MnesiaCache.Unsplit.html#content" rel="noopener nofollow ugc">https://hexdocs.pm/pow/1.0.12/Pow.Store.Backend.MnesiaCache.Unsplit.html</a></p>
<h4><a name="p-140290-api-integration-guide-3" class="anchor" href="#p-140290-api-integration-guide-3" aria-label="Heading link" rel="nofollow"></a>API integration guide</h4>
<p>Added a guide that explains how you can use Pow in an API: <a href="https://hexdocs.pm/pow/1.0.12/api.html#content" rel="noopener nofollow ugc">https://hexdocs.pm/pow/1.0.12/api.html</a></p>
<p>Happy coding <img src="https://forum.elixirforum.com/images/emoji/apple/rocket.png?v=15" title=":rocket:" class="emoji" alt=":rocket:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140290" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/140">Post #139</a>
	                </div>
	            </div>
              <div id="likers-container-140290" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140290"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #139"></div>
  </section>
</div>
    <div class="postbit" id="142566" data-post-id="142566">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="ryloric" data-post="129" data-topic="15807">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ryloric/48/15575_2.png" class="avatar"> ryloric:</div>
<blockquote>
<p>So, say a user while logged in, types out <code>session/new</code> in the address bar and presses return, the browser notices that the login page is stale since <code>max-age</code> is 0 and sends a request to the server, at which point phoenix knows they’re already logged in, and redirects them appropriately. This works as expected.</p>
<p>Instead, If the user clicks the back button and goes to <code>session/new</code> somewhere in their history, they will just see the login page again and they can interact with the form, resubmit it etc…, we do not want that to happen. I can make gif to show this behavior when I get home.</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="danschultzer" data-post="130" data-topic="15807">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/48/4942_2.png" class="avatar"> danschultzer:</div>
<blockquote>
<p>That’s a good point. I’ve added an issue and opened a PR for this (using <code>no-cache, no-store, must-revalidate</code> ):</p>
<p><a href="https://github.com/danschultzer/pow/issues/212" rel="noopener nofollow ugc">https://github.com/danschultzer/pow/issues/212 </a><br>
<a href="https://github.com/danschultzer/pow/issues/213" rel="noopener nofollow ugc">https://github.com/danschultzer/pow/issues/213 </a></p>
</blockquote>
</aside>
<p>Great to see that these issues are nicely handled as always. ^^</p>
<p>Now I notice we didn’t think about the problem in the other way. I mean what should happen when an user logged out then clicked on the browser back button ? How to prevent visitors from seeing a page that only authenticated users should see ?<br>
Sorry for just pointing this out wth yet any solution in mind.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="142566" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/141">Post #140</a>
	                </div>
	            </div>
              <div id="likers-container-142566" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="142566"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #140"></div>
  </section>
</div>
    <div class="postbit" id="142567" data-post-id="142567">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh now I see it works as expected for pages that require authentication…<br>
The problem is only about pages that do not require authentication but I render a conditional <code>login</code> or <code>logout</code> link on them. <code>Logout</code> shows up on them even if the user logget out but clicked the back button.</p>
<p>So the solution would myabe to have two different pages for this case even if there are almost the same. The second will pass through <code>Pow</code> <code>authentication_required</code> plug.</p>
<p>But this means to duplicate more or less a lot of pages. If someone has a nicer solution, I’m all for. ^^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="142567" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/142">Post #141</a>
	                </div>
	            </div>
              <div id="likers-container-142567" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="142567"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #141"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/15807/load_more?page=15">Load more posts (101 remaining)</a>
</div></template></turbo-stream>