2011-12-27 3 views
0

У меня есть веб-приложение JSF 2. Я основано на GlassFish 3. Я использую безопасность, управляемую контейнером, для обработки входа. Каждая страница в моем веб-приложении должна быть безопасной. Все страницы находятся в корневом каталоге вместе с страницей входа. Проблема заключается в том, что когда я набираю URL-адрес для прямого доступа к защищенной странице, он отображается, даже если пользователь не вошел в систему. Мне бы хотелось, чтобы каждая страница на моем сайте, за исключением страницы входа в систему, была защищена, поэтому пользователь должен получить доступ к сайту через эту страницу входа. Любые идеи, почему он не блокирует запросы на другие страницы, когда пользователь не вошел в систему?Управляемая безопасность Java Container, не перенаправляемая на страницу входа

Вот соответствующий отрывок из моей web.xml:

<welcome-file-list> 
    <welcome-file>index.jsf</welcome-file> 
</welcome-file-list> 
<security-constraint> 
    <display-name>EmployeeConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>Pages</web-resource-name> 
     <description/> 
     <url-pattern>/home.jsf</url-pattern> 
     <url-pattern>/applicantHome.jsf</url-pattern> 
     <url-pattern>/assessmentFinished.jsf</url-pattern> 
     <url-pattern>/help.jsf</url-pattern> 
     <url-pattern>/memberInfo.jsf</url-pattern> 
     <url-pattern>/phrases1.jsf</url-pattern> 
     <url-pattern>/phrases2.jsf</url-pattern> 
     <url-pattern>/quotations1.jsf</url-pattern> 
     <url-pattern>/quotations2.jsf</url-pattern> 
     <!--url-pattern>/myProfile.jsf</url-pattern--> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Employee</role-name> 
     <role-name>Applicant</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-constraint> 
    <display-name>ApplicantConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>Pages</web-resource-name> 
     <description/> 
     <url-pattern>/home.jsf</url-pattern> 
     <url-pattern>/applicantHome.jsf</url-pattern> 
     <url-pattern>/assessmentFinished.jsf</url-pattern> 
     <url-pattern>/help.jsf</url-pattern> 
     <url-pattern>/memberInfo.jsf</url-pattern> 
     <url-pattern>/phrases1.jsf</url-pattern> 
     <url-pattern>/phrases2.jsf</url-pattern> 
     <url-pattern>/quotations1.jsf</url-pattern> 
     <url-pattern>/quotations2.jsf</url-pattern> 
    </web-resource-collection> 
</security-constraint> 
<security-constraint> 
    <display-name>ReportsConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>Pages</web-resource-name> 
     <description/> 
     <url-pattern>/reports.jsf</url-pattern> 
     <url-pattern>/indReport.jsf</url-pattern> 
     <url-pattern>/indReportResults.jsf</url-pattern> 
     <url-pattern>/groupReport.jsf</url-pattern> 
     <url-pattern>/cloneReport.jsf</url-pattern> 
     <url-pattern>/home.jsf</url-pattern> 
    </web-resource-collection> 
</security-constraint> 
<security-constraint> 
    <display-name>AdministratorConstraints</display-name> 
    <web-resource-collection> 
     <web-resource-name>Pages</web-resource-name> 
     <description/> 
     <url-pattern>/admin.jsf</url-pattern> 
     <url-pattern>/home.jsf</url-pattern> 
     <url-pattern>/applicantHome.jsf</url-pattern> 
     <url-pattern>/assessmentFinished.jsf</url-pattern> 
     <url-pattern>/cloneBuilder.jsf</url-pattern> 
     <url-pattern>/cloneBuilderMenu.jsf</url-pattern> 
     <url-pattern>/cloneBuilderRangeEditor.jsf</url-pattern> 
     <url-pattern>/cloneReport.jsf</url-pattern> 
     <url-pattern>/cloneReport.jsf</url-pattern> 
     <url-pattern>/groupReport.jsf</url-pattern> 
     <url-pattern>/help.jsf</url-pattern> 
     <url-pattern>/indReport.jsf</url-pattern> 
     <url-pattern>/indReportResults.jsf</url-pattern> 
     <url-pattern>/licenseManager.jsf</url-pattern> 
     <url-pattern>/management.jsf</url-pattern> 
     <url-pattern>/memberInfo.jsf</url-pattern> 
     <url-pattern>/phrases1.jsf</url-pattern> 
     <url-pattern>/phrases2.jsf</url-pattern> 
     <url-pattern>/quotations1.jsf</url-pattern> 
     <url-pattern>/quotations2.jsf</url-pattern> 
     <url-pattern>/reports.jsf</url-pattern> 
     <url-pattern>/userAdmin.jsf</url-pattern> 
    </web-resource-collection> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>PerProUserAuth</realm-name> 
    <form-login-config> 
     <form-login-page>/index.jsf</form-login-page> 
     <form-error-page>/index.jsf</form-error-page> 
    </form-login-config> 
</login-config> 
<security-role> 
    <description/> 
    <role-name>Employee</role-name> 
</security-role> 
<security-role> 
    <description/> 
    <role-name>Applicant</role-name> 
</security-role> 
<security-role> 
    <description/> 
    <role-name>Administrator</role-name> 
</security-role> 
<security-role> 
    <description/> 
    <role-name>Reports</role-name> 
</security-role> 
<security-role> 
    <description/> 
    <role-name>Former Employee</role-name> 
</security-role> 
+0

Вместо того, чтобы иметь длинный список, почему бы вам не создать какую-либо папку (ы) с каким-либо значимым именем и добавить все, что вы там защитили, и ограничить доступ к этой папке. например вы можете добавить все защищенные представления в папку с именем secure и использовать '/secure/*'. –

ответ

0

Там в учебник here с цитатой, которая может иметь отношение.

Поскольку сопоставление ролей безопасности происходит во время развертывания, перед развертыванием приложения должно быть включено сопоставление по умолчанию . Чтобы повернуть по умолчанию, выберите Конфигурация -> Безопасность в консоли администратора . Нажмите «Включено» рядом с «Принцип по умолчанию» для сопоставления ролей и «Сохранить».

+0

Я включил это, но все еще не играю в кости. – Adam

Смежные вопросы