1. Из вопроса не очень понятно, как должна обрабатываться ситуация если анонимный пользователь зашел на страницу с записью на просмотр которой у него нет прав. Стандартный вариант - он видит сообщение: "Данная запись доступна только зарегистрированным пользователям, войдите или зарегистрируйтесь". "войдите" и "зарегистрируйтесь" соответственно ссылки. При article_access = True запись отображается для анонимного или нет? Допустим, что если article_access = True то запись доступна для анонимного пользователя. Тогда в шаблоне:
{% if user.is_authenticated or article.article_access %}
<p>{{ article.article_title }}</p>
<p>{{ article.article_text }}</p>
...
{% else %}
<p>"Данная запись доступна только зарегистрированным пользователям, <a href="{% url 'customer:login' %}">войдите</a> или
<a href="{% url 'customer:register' %}">зарегистрируйтесь".</a></p>
{% endif %}
2. Избавиться от generic view и сделать FBV:
if request.user.is_authenticated():
...
else:
...
3. Перекрыть какой то из методов DetailView проверить тот же request.user.is_authenticated() и вернуть нужный Queryset. В этом случае FBV будет компактней и проще.