我正在使用Jekyll构建我的个人网站并在github-pages上托管它。我想有一个密码保护区(只是密码保护目录,而不是整个网站)。我尝试了一些选项和技巧让htaccess
工作但失败了。
我想知道是否有人设法使用htaccess
或任何其他方法来保护github-pages上的目录。
列出对我不起作用的解决方案(或者我没有让它们工作):
* Flohei.
* Jeremy Ricketts.
答案 0 :(得分:7)
GitHubPages(如Bitbucket Pages和GitLab Pages)仅提供静态页面,因此唯一的解决方案是客户端(Javascript)。
解决方案可能是,而不是使用真实身份验证,只是与所有授权人员共享一个秘密(密码),并实施以下方案之一:
将所有私有文件放在(未列出的)子目录中,并使用所选密码的哈希命名。索引页面会询问您(使用Javascript)密码并构建计算哈希的正确起始链接。
例如参见:https://github.com/matteobrusa/Password-protection-for-static-pages
PRO: 非常简单的方法保护整个子目录树
缺点:
使用密码加密页面并使用javascript动态解密
参见例如:https://github.com/robinmoisson/staticrypt
PRO:没有纯文本页面代码(在客户端进行解密)
缺点:
答案 1 :(得分:2)
您可以尝试Jekyll Auth,如果遇到麻烦,this issue can be useful。
答案 2 :(得分:2)
一种选择是使用Cloudflare Access在DNS级别上控制访问。 在使用Cloudflare for DNS为Git页面设置自定义域之后,您可以使用其访问规则策略要求在指定的URL路径上进行身份验证。
如果有人熟悉绕过DNS阻止,仍然可以绕开。
答案 3 :(得分:-6)
我知道这是一篇很老的帖子,但有人磕磕绊绊会觉得这个解决方案很简单实用。
如果您的文件夹中有一个index.html登录页面,您可以从该目录指向其他子目录,并希望密码保护子目录,则可以在html代码的顶部包含以下密码功能,并使用它整个链接:
<script>
function password() {
var testV = 1;
var pass1 = prompt('Enter Your Password', ' ');
while (testV < 3) {
if (!pass1)
history.go(-1);
if (pass1.toLowerCase() == "Guest") {
alert('Password Correct');
window.open("Yournextpage.html");
break;
}
testV += 1;
var pass1 =
prompt('Access Denied - Password Incorrect, Please Try Again.', 'Password');
}
if (pass1.toLowerCase() != "password" & testV == 3)
history.go(-1);
return " ";
}
</script>
只需更改访客密码以及要打开的html。然后,您可以在index.html中使用以下内容:
<input type="button" class="btn btn-default btn-lg" value="Log In" onClick="passWord()">
您可以将课程指定为&#34; text&#34;,例如。