request.isuserinrole («администратор») также возвращает истину для пользователя не в роле администратора, а пользователь роли

StackOverflow https://stackoverflow.com/questions/1968882

Вопрос

В настоящее время я пробую jdbcrealm в Glasshfish v3: у меня есть 2 роли пользователя и администратора.

У меня есть логический завод, который перенаправляет на URL (SAID /ADMIN или /пользователь) на основе метода запроса.isuserInrole («Администратор»).

Проблема заключается в том, когда администратор входит в систему, он возвращает True, поэтому перенаправляется на /администратор, но он также может получить доступ к /пользователю. Когда пользователь регистрируется в запросе. IsuserinRole («Администратор») также возвращает True. request.IsuserInrole («uncistingRole») возвращает false для обоих.

Например:

request.isuserinrole ("admin")+ ""+ request.isuserinrole ("user")+ ""+ request.isuserinrole ("uncistingrole")

Для пользователя Loggedin: возвращает True True False

Для администратора Loggedin возвращает True True False

Это часть моего web.xml:

<security-constraint>
    <display-name>Constraint1</display-name>
    <web-resource-collection>
        <web-resource-name>adminProtected</web-resource-name>
        <description>Administrator restricted area</description>
        <url-pattern>/admin/*</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>
    <display-name>Constraint2</display-name>
    <web-resource-collection>
        <web-resource-name>userProtected</web-resource-name>
        <description>User restricted area</description>
        <url-pattern>/user/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>USER</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>Constraint3</display-name>
    <web-resource-collection>
        <web-resource-name>LoginServlet</web-resource-name>
        <description>All restricted area</description>
        <url-pattern>/LoginServlet</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>USER</role-name>
        <role-name>ADMIN</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>securityJDBC</realm-name>
    <form-login-config>
        <form-login-page>/login.jsf</form-login-page>
        <form-error-page>/login.jsf</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <description></description>

    <role-name>USER</role-name>
</security-role>
<security-role>
    <description></description>
    <role-name>ADMIN</role-name>
</security-role>
<servlet>
    <description></description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>controllers.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>

И мой Sun-web.xml:

    <security-role-mapping>
    <role-name>USER</role-name>
    <group-name>USER</group-name>
</security-role-mapping>
<security-role-mapping>
    <role-name>ADMIN</role-name>
    <group-name>ADMIN</group-name>
</security-role-mapping>

Благодарю вас!

Это было полезно?

Решение

Исправлено, убедившись, что настройка сферы «назначения групп» пуста. Glassfish загрузит их из группового стола.

Другие советы

Ваши сопоставления безопасности отлично смотрятся на первый взгляд. Как насчет ваших пользовательских отображений? Похоже, одно и то же имя пользователя отображается как на ролях пользователя, так и для администратора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top