我正在建立一个网站,工作人员将拥有自己的网站部分:example.com/jones,example.com/smith等.jones和smith是内部具有相同模板的模板组(使用Stash和Low保持干净的变量。一些用户对隐私有不同的需求。一方面,他们的部分将是公开的。另一方面,一些用户需要管理谁可以访问他们的内容(使用Solspace朋友)。
然而,在该范围的中间,有些人只是想要防止任何随机的人看到他们的内容。我不想使用成员/成员组来管理它。我不希望访问者需要注册才能看到内容。共享会员帐户是一个选项,但我们由于其他问题而排除了这一点(如果重置密码,评论留在同一帐户中,等等。
我们想要的是密码保护模板组。工作人员可以让人们知道在哪里看到他们的页面,让用户知道密码是什么。这在服务器级别都是可能的,但是可以允许用户直接管理密码吗?我们可以做的任何事情,以尽量减少我们需要多少管理这个更好。自定义字段和添加项允许这种安全性?我没有在Devot-ee上看到任何内容,论坛上的方法也没有这样做。有点过分,但我想问。
答案 0 :(得分:11)
由于您说您不想与实际的会员帐户绑定,并且可以使用自定义字段存储可编辑的密码...
我最近做了类似的事情,使用自定义字段保护了一组条目。它类似于此“Password Protected Content Made Simple”文章中概述的方法。但是我没有在模板中使用PHP,而是使用了Mo' Variables。而不是使用url_title我使用了自定义字段(下面称为client_password)。
此外,我使用Session Variables plugin检查用户是否已在后续页面加载时“登录”,从而阻止他们不得不一次又一次地输入密码。
{!-- PASSWORD REQUIRED --}
{if client_password != ""}
{!-- if passed show content and set session --}
{if post:password == client_password}
{!-- protected content here --}
{!-- set session --}
{embed='embeds/_set_session' entry_id="{entry_id}"}
{!-- if session is valid show content --}
{if:elseif "{exp:session_variables:get name='logged_in'}" == "{entry_id}"}
{!-- protected content here --}
{!-- if failed show login --}
{if:elseif post:password != "" AND post:password != client_password}
<div id="protected">
<p>Incorrect password. Please try again.</p>
<br>
<form action="" method="post">
<strong>Password</strong><br />
<div>
<input name="password">
</div>
<input type="submit" class="submit" value="submit">
</form>
</div>
{!-- if first attempt show login and prompt --}
{if:else}
<div id="protected">
<p>This page is password protected. Please provide the password.</p>
<br>
<form action="" method="post">
<strong>Password</strong><br />
<div>
<input name="password">
</div>
<input type="submit" class="submit" value="submit">
</form>
</div>
{/if}
{!-- NO PASSWORD REQUIRED --}
{if:else}
{!-- protected content here --}
{/if}
答案 1 :(得分:5)
我想用我正在使用的代码来更新这个,以便让htaccess和htpasswd通过模板组进行保护。它可以像Alex一样使用,但是全有或全无的方法。它有自己的优点和缺点,但想分享它作为一种选择。
首先,我使用的是原生模板行为:example.com/group/template/url_title。我想密码保护一些模板组,但在EE的成员和成员组之外。即一个用户和密码。
我的htaccess文件看起来像这样(来自http://perishablepress.com/enable-file-or-directory-access-to-your-htaccess-password-protected-site/):
# We set some variables, matching URL's for which we do not wish to active
# the password protection
SetEnvIf Request_URI "^/privategroup.*$" private
# Setup the password protection
AuthName "Password Needed"
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /Users/user/Sites/example/.htpasswd
Require valid-user
# Add the exceptions for matched URL's
Order Deny,Allow
Deny from env=private
Satisfy any
htpasswd文件应该在webroot之上,但是为了测试我把它留在webroot中。 AuthUserFile行告诉Apache在哪里可以找到带有用户名和密码的文件。这必须......必须是绝对的道路。我使用亲戚并得到500错误。您需要使用终端或其他工具来制作此文件。 http://developer.apple.com/library/Mac/#documentation/Darwin/Reference/ManPages/man1/htpasswd.1.html
结果是该目录需要用户名和密码。现在它将接受我的htpasswd文件中的任何有效用户。但是我可以通过指定特定用户(需要用户john tim lisa)或组来改变它。
你有它。在不使用任何本机EE功能的情况下,让人们脱离特定模板组。
答案 2 :(得分:0)
我会说实话,我不确定这是否符合您的需求。虽然它没有点击它,但我以前从未尝试过它,并且需要确实知道它确实存在或不适合。
我会发布它,就像它可能会帮助你或其他人一样:
答案 3 :(得分:0)
您是否考虑过使用Template Access Restrictions下的HTTP身份验证选项?它使用成员密码进行身份验证,但不要求成员实际登录。
你说你“不想使用会员/会员组来管理这个”,但是你想“允许用户直接管理密码”......当然使用内置的会员系统是最简单的方法?