📄 auth.html.en
字号:
Database</a>.</p> <p>Finally, the <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive provides the authorization part of the process by setting the user that is allowed to access this region of the server. In the next section, we discuss various ways to use the <code class="directive"><a href="../mod/core.html#require">Require</a></code> directive.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Letting more than oneperson in</a></h2> <p>The directives above only let one person (specifically someone with a username of <code>rbowen</code>) into the directory. In most cases, you'll want to let more than one person in. This is where the <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code> comes in.</p> <p>If you want to let more than one person in, you'll need to create a group file that associates group names with a list of users in that group. The format of this file is pretty simple, and you can create it with your favorite editor. The contents of the file will look like this:</p> <div class="example"><p><code> GroupName: rbowen dpitts sungo rshersey </code></p></div> <p>That's just a list of the members of the group in a long line separated by spaces.</p> <p>To add a user to your already existing password file, type:</p> <div class="example"><p><code> htpasswd /usr/local/apache/passwd/passwords dpitts </code></p></div> <p>You'll get the same response as before, but it will be appended to the existing file, rather than creating a new file. (It's the <code>-c</code> that makes it create a new password file).</p> <p>Now, you need to modify your <code>.htaccess</code> file to look like the following:</p> <div class="example"><p><code> AuthType Basic<br /> AuthName "By Invitation Only"<br /> AuthUserFile /usr/local/apache/passwd/passwords<br /> AuthGroupFile /usr/local/apache/passwd/groups<br /> Require group GroupName </code></p></div> <p>Now, anyone that is listed in the group <code>GroupName</code>, and has an entry in the <code>password</code> file, will be let in, if they type the correct password.</p> <p>There's another way to let multiple users in that is less specific. Rather than creating a group file, you can just use the following directive:</p> <div class="example"><p><code> Require valid-user </code></p></div> <p>Using that rather than the <code>Require user rbowen</code> line will allow anyone in that is listed in the password file, and who correctly enters their password. You can even emulate the group behavior here, by just keeping a separate password file for each group. The advantage of this approach is that Apache only has to check one file, rather than two. The disadvantage is that you have to maintain a bunch of password files, and remember to reference the right one in the <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code> directive.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="possibleproblems" id="possibleproblems">Possible problems</a></h2> <p>Because of the way that Basic authentication is specified, your username and password must be verified every time you request a document from the server. This is even if you're reloading the same page, and for every image on the page (if they come from a protected directory). As you can imagine, this slows things down a little. The amount that it slows things down is proportional to the size of the password file, because it has to open up that file, and go down the list of users until it gets to your name. And it has to do this every time a page is loaded.</p> <p>A consequence of this is that there's a practical limit to how many users you can put in one password file. This limit will vary depending on the performance of your particular server machine, but you can expect to see slowdowns once you get above a few hundred entries, and may wish to consider a different authentication method at that time.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="whatotherneatstuffcanido" id="whatotherneatstuffcanido">What other neat stuff can Ido?</a></h2> <p>Authentication by username and password is only part of the story. Frequently you want to let people in based on something other than who they are. Something such as where they are coming from.</p> <p>The <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> and <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> directives let you allow and deny access based on the host name, or host address, of the machine requesting a document. The <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> directive goes hand-in-hand with these two, and tells Apache in which order to apply the filters.</p> <p>The usage of these directives is:</p> <div class="example"><p><code> Allow from <var>address</var> </code></p></div> <p>where <var>address</var> is an IP address (or a partial IP address) or a fully qualified domain name (or a partial domain name); you may provide multiple addresses or domain names, if desired.</p> <p>For example, if you have someone spamming your message board, and you want to keep them out, you could do the following:</p> <div class="example"><p><code> Deny from 10.252.46.165 </code></p></div> <p>Visitors coming from that address will not be able to see the content covered by this directive. If, instead, you have a machine name, rather than an IP address, you can use that.</p> <div class="example"><p><code> Deny from <var>host.example.com</var> </code></p></div> <p>And, if you'd like to block access from an entire domain, you can specify just part of an address or domain name:</p> <div class="example"><p><code> Deny from <var>192.168.205</var><br /> Deny from <var>phishers.example.com</var> <var>moreidiots.example</var><br /> Deny from ke </code></p></div> <p>Using <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> will let you be sure that you are actually restricting things to the group that you want to let in, by combining a <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> and an <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> directive:</p> <div class="example"><p><code> Order deny,allow<br /> Deny from all<br /> Allow from <var>dev.example.com</var> </code></p></div> <p>Listing just the <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> directive would not do what you want, because it will let folks from that host in, in addition to letting everyone in. What you want is to let <em>only</em> those folks in.</p></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="moreinformation" id="moreinformation">More information</a></h2> <p>You should also read the documentation for <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> and <code class="module"><a href="../mod/mod_access.html">mod_access</a></code> which contain some more information about how this all works.</p></div></div><div class="bottomlang"><p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English"> en </a> |<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Espa駉l"> es </a> |<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p></div><div id="footer"><p class="apache">Copyright 2007 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -