Проверка подлинности Spring Security, NULL-AUTH-USER в журнале доступа GlassFish

Я занимаюсь разработкой веб-приложения на GlassFish 4 с использованием Spring Web MVC 4 и Spring Security.

Я настроил аутентификацию на основе форм с провайдером JDBC с помощью XML-конфигурации Spring:

<jee:jndi-lookup id="appDataSource" jndi-name="jdbc/appDbPool" expected-type="javax.sql.DataSource" />
<http use-expressions="true">
    <form-login login-page="/login.html" default-target-url="/" />
    <logout logout-url="/logout" logout-success-url="/" />
</http>
<authentication-manager>
    <authentication-provider>
        <password-encoder hash="md5"/>
        <jdbc-user-service data-source-ref="appDataSource"
            users-by-username-query="SELECT user_login_name, user_password_hash, 1 FROM user_accounts WHERE user_login_name = ?"
            authorities-by-username-query="SELECT ... WHERE user_login_name = ?"
        />
    </authentication-provider>
</authentication-manager>

Я включил ведение журнала доступа в конфигурации HTTP-службы GlassFish, используя строку формата по умолчанию:

%client.name% %auth-user-name% %datetime% %request% %status% %response.length%

Прежде чем пользователь вошел в систему, я вижу "NULL-AUTH-USER" в поле%auth-user-name% журнала доступа. После успешного входа пользователя я ожидаю, что Spring Security создаст объект сеанса стандартного сервера Java EE, и имя пользователя будет отображаться в журнале доступа. Но журнал показывает тот же "NULL-AUTH-USER".

Вот цитата из моего журнала:

"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:10 +0500" "GET /appweb/main.html HTTP/1.1" 200 24923

(здесь пользователь переходит на страницу "/appweb/profile", на которой пользователь должен войти в систему)

"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:20 +0500" "GET /appweb/login.html HTTP/1.1" 200 5471 
"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:25 +0500" "POST /ectrweb/login HTTP/1.1" 302 181 

(пользователь успешно залогинился и перешел на страницу своего профиля)

"0:0:0:0:0:0:0:1" "NULL-AUTH-USER" "21/Jun/2018:10:31:25 +0500" "GET /appweb/profile HTTP/1.1" 200 20202 

Что мне нужно сделать, чтобы правильно отображать имя пользователя для входа в систему с помощью Spring Security?

(В моем другом приложении я использую безопасность JSF и GlassFish с областью JDBC вместо сред Spring. В журнале доступа отображается зарегистрированное имя пользователя правильно:

"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:32:17 +0500" "GET /index.xhtml HTTP/1.1" 200 26964
"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:32:47 +0500" "GET /app/summary.xhtml HTTP/1.1" 200 3767
"127.0.0.1" "NULL-AUTH-USER" "21/Jun/2018:11:33:29 +0500" "POST /app/j_security_check HTTP/1.1" 302 193 
"127.0.0.1" "g66" "21/Jun/2018:11:33:29 +0500" "GET /app/summary.xhtml HTTP/1.1" 200 16928

)

0 ответов

Другие вопросы по тегам