ich Antwort von @BalusC auf JSF 2.0: How to get the URL that is entered in the browser's address bar folgende bin Seiten von den Benutzern zu beschränken, die nicht angemeldet sindJSF - Implementierung Filter für eingeschränkte Seiten
Filter:
public class RestrictPageFilter implements Filter{
FilterConfig fc;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
fc=filterConfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpres = (HttpServletResponse) response;
if (httpreq.getUserPrincipal() == null) {
httpreq.getSession().setAttribute("from", httpreq.getRequestURI());
httpres.sendRedirect("/pages/login.xhtml");
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
web.xml:
.<security-constraint>
<web-resource-collection>
<web-resource-name>Admin pages</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/restricted/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>User pages</web-resource-name>
<url-pattern>/restricted/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
<!--login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc-realm</realm-name>
<form-login-config>
<form-login-page>/pages/login.xhtml</form-login-page>
<form-error-page>/pages/error.xhtml</form-error-page>
</form-login-config>
</login-config-->
<filter>
<filter-name>RestrictPageFilter</filter-name>
<filter-class>gov.denis.chanceryweb5.filter.RestrictPageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RestrictPageFilter</filter-name>
<url-pattern>/restricted/*</url-pattern>
</filter-mapping>
Glassfish-web.xml
<glassfish-web-app>
<security-role-mapping>
<role-name>ADMIN</role-name>
<group-name>ADMIN</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>USER</role-name>
<group-name>USER</group-name>
</security-role-mapping>
Reich in Glasfischen gui Konsole:
Wenn meine Web-App den Zugriff auf in Browser ich dies aus irgendeinem Grund? Warum?
angegeben weiß nicht, ob dies im Zusammenhang auf „Authentifizierung“, was aber Ihre Filter sollen nicht auf allen Seiten mit * .xhtml abgebildet werden (es wird auf jeder Seite aufgerufen einschließlich Index). Sie sollten es nur auf eingeschränkten Seiten abbilden, von denen ich annehme, dass Index nicht ist. – Fallup
also sollte ich 'login.xtml' aus Seiten verschieben, die ich einschränken möchte? – Melissaa
Anmeldeseiten sollten keine Sicherheitsbeschränkungen aufweisen. Wie sehen Ihre Datenbanktabellen aus? Sie hatten sie bereits und versuchen, sie an JDBCRealm in GlassFish anzupassen? – rbento