限制GitLab中没有登录的用户浏览内容

时间:2017-04-06 10:01:41

标签: gitlab gitlab-ce

在我自己托管的GitLab CE安装中,有一个Explore链接,这样就不会为没有登录的用户提供读取权限。我怎么能禁用它?

3 个答案:

答案 0 :(得分:1)

我认为您必须将项目的可见性设置为私有或内部。除此之外,我认为存储库应配置为仅由我的团队成员查看以获得额外的安全层。

这些是我在那里托管的一些项目的设置,它们没有出现在“探索”部分。您可以在每个项目的Settings标签中查看它们。

enter image description here

答案 1 :(得分:1)

如果您仍想使用“探索”部分但希望阻止外部用户克隆项目,则需要将这些项目设置为Internal可见性级别。

Here是不同能见度水平的一个概念。作为管理员,您可以将restrict项目设置为Public,并且仅允许PrivateInternal级别。

答案 2 :(得分:1)

您无法禁用此链接,但您可以将其重定向回匿名用户的登录页面。

cd /opt/gitlab/embedded/service/gitlab-rails/app/controllers/
sudo cp application_controller.rb application_controller.rb.orig
sudo vim application_controller.rb

并将以下代码段添加到application_controller.rb

...
 before_action :force_authenticated_user!
...
def force_authenticated_user!(*args)
    if (!current_user) and (["/explore", "/help", "/public", "/users/password/new", "/users/password/edit"].include?(request.path))
        redirect_to new_user_session_path and return
    end
end
...
所有路径的

或更好的方法(带子目录):

...
 before_action :force_authenticated_user!
...
def force_authenticated_user!(*args)
     if (!current_user) and (["/users/sign_in", "/users/password","/uploads/-/system/appearance/header_logo/1/your_logo.PNG","/users/auth/ldapmain/callback"].exclude?(request.path))
            redirect_to new_user_session_path and return
    end
end
...