Обычно вы помещаете защищенные страницы в общий путь URL, такой как /app/*
, /secured/*
, /private/*
и т. Д. Таким образом, вы можете использовать одну точку входа для управления доступом.Если вы используете безопасность, управляемую контейнером , тогда нужно указать правильный шаблон URL:
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted pages</web-resource-name>
<url-pattern>/secured/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
Если вы, тем не менее, используете доморощенную защиту, вам необходимо реализовать Filter
для этого вместо:
@WebFilter("/secured/*")
public class AuthorizationFilter implements Filter {
// ...
}
или если вы еще не используете Servlet 3.0, зарегистрируйте его следующим образом вместо использования @WebFilter
:
<filter>
<filter-name>authorizationFilter</filter-name>
<filter-class>com.example.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>authorizationFilter</filter-name>
<url-pattern>/secured/*</url-pattern>
</filter-mapping>
Внутри метода doFilter()
вам нужно написать код, который проверяет, вошел ли пользователь в систему или нет, а затем продолжает цепочку или перенаправляет ответ на страницу входа (которая сама по себе, конечно, не покрываетсяШаблон URL).
См. Также: