2015-09-07 2 views
0

Я использую Spring MVC 4.1.6 для написания веб-приложения, работающего на Tomcat 6.0.43, с помощью java 6.45. Я использую аутентификацию на основе формы, и я хочу, чтобы все страницы были защищены, за исключением страницы входа и папки ресурсов, содержащей изображения и т. Д. Я уже прочитал ответ How to exclude one url from authorization, но это не работает для меня. Я получаю сообщение об ошибке в моем браузере «HTTP Status 403 - доступ к запрашиваемому ресурсу был отклонен». Я потратил часы, пытаясь понять это без каких-либо успехов. Если у кого-то есть какие-то идеи, они были бы весьма признательны. Ниже приведена соответствующая часть web.xml.Как исключить один URL из авторизации при использовании Spring MVC

<!-- specify which resources are restricted for users --> 
    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>User</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint><role-name>user</role-name></auth-constraint> 
    </security-constraint> 

    <!-- specify which resources are not restricted --> 
    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Login</web-resource-name> 
     <url-pattern>/login</url-pattern> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <!-- no auth-constraint --> 
    </security-constraint> 


    <!-- specify all the roles defined for this web app --> 
    <security-role><role-name>admin</role-name></security-role> 
    <security-role><role-name>user</role-name> </security-role> 


    <!-- specify how the user will be authenticatated --> 
    <form-login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-page>/login</form-login-page> 
    <form-error-page>/login</form-error-page> 
    </form-login-config> 

И, наконец, вот структура папок моего веб-приложения, поскольку она развернута на сервере tomcat.

enter image description here

+0

Я не знаком с этим стилем конфигурации безопасности, но сначала попробуйте поместить строфу «no auth-constraint»; правила безопасности часто применяются на основе найденного первого совпадения. – chrylis

ответ

0

Оказывается, там была ошибка в web.xml, что сервер Tomcat не жалуясь. Как только я исправил ошибку, ошибка http 403 исчезла. Вот правильный web.xml.

 <!-- specify which resources are restricted for users --> 
    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>protected resources</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint><role-name>user</role-name></auth-constraint> 
    </security-constraint> 

    <!-- specify which resources are not restricted --> 
    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>unrestricted resources</web-resource-name> 
     <url-pattern>/login</url-pattern> 
     <url-pattern>/resources/*</url-pattern> 
    </web-resource-collection> 
    <!-- no auth-constraint --> 
    </security-constraint> 


    <!-- specify all the roles defined for this web app --> 
    <security-role><role-name>admin</role-name></security-role> 
    <security-role><role-name>user</role-name> </security-role> 


    <!-- specify how the user will be authenticatated --> 
    <login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>default</realm-name> 
    <form-login-config> 
     <form-login-page>/login</form-login-page> 
     <form-error-page>/login</form-error-page> 
    </form-login-config> 
    </login-config> 
Смежные вопросы