سؤال

تحية طيبة!

عندما أحاول المصادقة ضد DB الموجودة، أحصل على مصادقة ولكن أحصل على 403 صفحة. إذا حاولت فقط كلمة مرور خاطئة، أحصل على رسالة "بيانات اعتماد خاطئة" كما هو متوقع. حاولت المصادقة لكل تطبيق نموذج مضمن مع SpringSecurity وهذا يعمل بشكل جيد.

Security-Context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
    xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">

    <global-method-security secured-annotations="enabled"></global-method-security>

    <http auto-config="true" >
        <intercept-url pattern="/admin/**" access="ROLE_TEST" />
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <form-login
            login-page="/login/index.jsp"
            default-target-url="/admin/test.jsp"
            authentication-failure-url="/login/index.jsp?login_error=1" />  
    </http>

    <authentication-provider user-service-ref="jdbcUserService">      
        <password-encoder ref="passwordEncoder">
                <salt-source system-wide="n103df"/>
        </password-encoder>        
    </authentication-provider>


    <beans:bean id="jdbcUserService"  class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
        <beans:property name="rolePrefix" value="" />
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="enableAuthorities" value="true"/>
        <beans:property name="enableGroups" value="false"/>
        <beans:property name="authoritiesByUsernameQuery" value="SELECT username,authority FROM authorities WHERE username = ?" />
        <beans:property name="usersByUsernameQuery" value="SELECT username,password,enabled as enabled FROM users WHERE username = ?" />
        <beans:property name="groupAuthoritiesByUsernameQuery" value="" />

    </beans:bean>

<beans:bean id="passwordEncoder" class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/>

سوف نقدر أي مساعدة :-) شكرا مقدما!

هل كانت مفيدة؟

المحلول

إذا كنت تحصل على رمز 403، فهذا يعني أن المستخدم ليس لديه الأدوار المطلوبة. لذلك، فإن Athentication ليست هي المشكلة، هو إذن.
الطريقة الوحيدة لمعرفة ما يجري هو وضع مستوى تسجيل التصحيح، يجب أن يكون هناك مزيد من المعلومات. نشرها هنا.
هل أدوارك لديها بادئة "دور"؟

نصائح أخرى

... اكتشفه. على الرغم من وجود دور جاري الأنف المحدد في ملف التكوين ونفس الشيء في عمود "السلطة" من DB، فإن SPRING-SEC كان يتوقع دور الدور:

تصحيح الأخطاء، التغيرات الموسيقيةإعترست، HTTP-8084-7] كائن آمن: FilterINvocation: URL: /admin/test.jsp؛ Configattributes: [ROUM_TEST] [تصحيح الأخطاء، التغيرات الموسيقيةإعترست، http-8084-7] سابقا للمصادقة: ORG.SPringFrameWork.Security.providers.usernamepasswordauthenticken@af840ed7: المدير: Org.springframework.security.userdetails.user@3ec100: اسم المستخدم: TestUser؛ كلمة المرور: [محمي]؛ ممكن: صحيح؛ acceptnexpired: صحيح؛ أوراق الاعتماد Nonexpired: صحيح؛ accountnonlocked: صحيح؛ السلطات الممنوحة: رواد الدوران؛ كلمة المرور: [محمي]؛ مصادقة: صحيح؛ التفاصيل: Org.springframework.security.ui.webauthenticationdetireails@1c07a: remoteipaddress: 127.0.0.1؛ الجلسة: 350B260FAFFDBDBF04D5CB4AAAB7B8A441؛ السلطات الممنوحة: Roil_supervisor [تصحيح الأخطاء والاستثمارالشركة، HTTP-8084-7] تم رفض الوصول (المستخدم غير مجهول)؛ تفويض إلى Ascessdeniedhandler Org.springframework.security.accessdeniedException: يتم رفض الوصول في Org.SpringFramework.security.vote.decideBased.Decide (مؤشرات Based.java: 68)

... الآن أنا فضولي، كيف تأتي؟ لذلك بعد تغيير الدور: يعمل كل شيء في ملف التكوين في ملف التكوين كما هو متوقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top