Du wirst nicht verhindern können, dass sich User Lesezeichen im Browser anlegen oder die URL merken und erneut eingeben. Deshalb sollte auf jeder Seite die Lese-Berechtigung überprüft werden.
Wir setzen in einem Projekt das Personalisierungsmodul ein, was die Vergabe von Rollen auf Struktur-Ebene ermöglicht. Im Ausgabekanal des Templates prüfen wir dann per JSP die Berechtigungen und unterbinden ggf. den Zugriff. Soweit ich weiß, funktioniert das Modul auch nur mit Java und nicht mit PHP.
$CMS_IF(!#global.node.meta("meta_permission", "inherit").getAllowedExplicit("").isEmpty || !#global.node.meta("meta_permission", "inherit").getForbiddenExplicit("").isEmpty)$
<%@ taglib uri="FIRSTpersonalisation" prefix="fsp" %>
<%@page trimDirectiveWhitespaces="true" %>
<%@page import="java.text.*,
java.io.*,
java.security.Principal,
org.apache.catalina.realm.GenericPrincipal" %>
<%
ServletContext context = pageContext.getServletContext();
String webInfoPath = context.getRealPath(File.separator + "WEB-INF");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
<fsp:authorize force="true"/>
<%
if (request.getUserPrincipal() != null) {
de.espirit.firstspirit.opt.personalisation.User user = (de.espirit.firstspirit.opt.personalisation.User) session.getAttribute("FIRSTpersonalisation.user");
final Principal userPrincipal = request.getUserPrincipal();
GenericPrincipal genericPrincipal = (GenericPrincipal) userPrincipal;
final String[] roles = genericPrincipal.getRoles();
for(String role : roles) {
user.addGroup(role);
}
session.setAttribute("FIRSTpersonalisation.user", user);
session.setAttribute("FIRSTpersonalisation.usergroups", user.getGroups());
}
%>
$CMS_END_IF$