powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring security. jdbc-user-service data-source-ref что это значит?
25 сообщений из 25, страница 1 из 1
Spring security. jdbc-user-service data-source-ref что это значит?
    #38847961
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал примерчик в статье:

http://howtodoinjava.com/2013/04/16/jdbc-user-service-based-spring-security-example/

В примере используется следующая конфигурация spring security:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<authentication-manager alias="authenticationManager">
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"
 
       users-by-username-query="
         SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
         FROM TBL_USERS
         WHERE USERNAME=?;"
 
       authorities-by-username-query="
        SELECT u.USERNAME, r.ROLENAME
        FROM TBL_USERS u, TBL_USER_ROLE r
        WHERE u.ID = r.USERID
        AND u.USERNAME=?;"
 
        />
    </authentication-provider>
</authentication-manager>



Никак не могу догадаться, что это значит.

Помогите пожалуйста
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848037
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас в Spring контексте должен иметься бин типа javax.sql.DataSource и у него должен быть Spring id "dataSource"
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848061
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а запросы что значат?

Кто и каким образом подставляет вместо знака вопроса значение?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848071
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа запросы что значат?

jdbc-user-service не знает структуру вашей базы. Запросы реализуют выборку из вашей базы в формате, который понимает jdbc-user-service

questionerКто и каким образом подставляет вместо знака вопроса значение?
jdbc-user-service. таким же образом как и любой другой код работающий с JDBC API через PreparedStatement
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848264
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczjdbc-user-service не знает структуру вашей базы. Запросы реализуют выборку из вашей базы в формате, который понимает jdbc-user-service


Выборку какого формата понимает jdbc-user-service ?

что это за сервис такой? где можно посмотреть его код?
авторКто и каким образом подставляет вместо знака вопроса значение?
Blazkowiczjdbc-user-service. таким же образом как и любой другой код работающий с JDBC API через PreparedStatement

Код: sql
1.
2.
3.
SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
         FROM TBL_USERS
         WHERE USERNAME=?;"



Что значит этот запрос?

выбери мне USERNAME, PASSWORD когда 1?

Кто один?

дальше какие непонятные условия...

выборку надо сделать из таблицы TBL_USERS
где USERNAME=?

это какое оно должно быть?

Если константа - я бы понял, а так я не понимаю с чем сравнивается.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848327
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВыборку какого формата понимает jdbc-user-service ?

http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#nsa-jdbc-user-service

questionerчто это за сервис такой? где можно посмотреть его код?

http://docs.spring.io/spring-security/site/docs/3.2.x/apidocs/org/springframework/security/core/userdetails/jdbc/JdbcDaoImpl.html

questioner
Код: sql
1.
2.
3.
SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
         FROM TBL_USERS
         WHERE USERNAME=?;"



Что значит этот запрос?
выбери мне USERNAME, PASSWORD когда 1?
Кто один?

Это специфика используемой RDBMS
По полю ENABLED, если оно 1, то true, если нет, то false. Конвертацияй числового поля в boolean строку.

questionerдальше какие непонятные условия...

Учи SQL
http://dev.mysql.com/doc/refman/5.0/en/case.html

questionerвыборку надо сделать из таблицы TBL_USERS
где USERNAME=?
это какое оно должно быть?
Если константа - я бы понял, а так я не понимаю с чем сравнивается.
Вопроса не понял.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848355
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

BlazkowiczЭто специфика используемой RDBMS
По полю ENABLED, если оно 1, то true, если нет, то false. Конвертацияй числового поля в boolean строку.

ааа вот оно что....



Blazkowiczавторвыборку надо сделать из таблицы TBL_USERS
где USERNAME=?
это какое оно должно быть?
Если константа - я бы понял, а так я не понимаю с чем сравнивается.

Вопроса не понял.

У нас есть PreparedStatement:
Код: java
1.
2.
3.
SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
         FROM TBL_USERS
         WHERE USERNAME=?;"



Если бы это был обычный java код, то мы написали что-то такое:

Код: java
1.
preparedStatement.setString(1, "Vasya");



Я так понимаю подобную строку Spring где-то за нас вставляет.

Вопрос в том откуда он берет это значение("Vasya").
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848364
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВопрос в том откуда он берет это значение("Vasya").
Из формы ввода логина и пароля, например. Зависит от того к чему Spring Security прикручена.
Ты остальные статьи этой серии проигнорировал?
http://howtodoinjava.com/2013/04/16/login-form-based-spring-3-security-example/
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848383
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Прикручиваем spring security к страничке я так понимаю в этой строчке

Код: java
1.
 <form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied" />



Код: java
1.
2.
3.
4.
@RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(ModelMap model) {
        return "login";
    }



login.jsp:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
 
<html>
    <body>
        <h1 id="banner">Login to Security Demo</h1> 
        <form name="f" action="<c:url value='j_spring_security_check'/>"
                    method="POST">
            <table>
                <tr>
                    <td>Username:</td>
                    <td><input type='text' name='j_username' /></td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td><input type='password' name='j_password'></td>
                </tr>
                <tr>
                    <td colspan="2">&nbsp;</td>
                </tr>
                <tr>
                    <td colspan='2'><input name="submit" type="submit">&nbsp;<input name="reset" type="reset"></td>
                </tr>
            </table>
        </form>
    </body>
</html>




Тут я вижу:
j_username
j_username

USERNAME не вижу
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848384
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

USERNAME это колонка в БД и в запросе. Он к слоям Web и Security отношения не имеет. Ты же спрашивал где исходники класса посмотреть? Я тебе кинул имя.
http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.security/spring-security-core/3.0.1.RELEASE/org/springframework/security/core/userdetails/jdbc/JdbcDaoImpl.java
Открой в проекте. Поставь бряку и изучай кто туда параметры передаёт по всему стеку.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848395
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Я понимаю, что можно подебажить, но у спринга столько всякий интерсептеров, что по стектрейсу мне никак не разобраться будет)

Вопрос в том как пользователю(библиотеки spring-security) пользоваться этой штукой.

Вот допустим у меня такой вот запрос:

автор SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
FROM TBL_USERS
WHERE email=?


Откуда spring security возьмёт email для подстановки?

Если таких вариантов много, то любой самый простой пожалуйста объясните
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848402
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Ты же привел выше форму и контроллер. Из них и берет.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848445
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

неужели непонятно, что я спрашиваю ?)))

Код: sql
1.
2.
3.
SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
FROM TBL_USERS
WHERE email=?



Этот запрос к спринг секьюрити на всех пользователей, которые могут залогиниться.

для спринг секурити важны 3 поля: USERNAME, PASSWORD, CASE.

Мы сами хотим добавить ограничение на email в этой таблице, что он должен быть каким?

Если бы было написано

авторWHERE email=emailadress@gmail.com

то всё понятно, а тут какое ограничение наложено может быть?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848447
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerнеужели непонятно, что я спрашиваю ?)))

Нет. Не понятно.

questionerЭтот запрос к спринг секьюрити на всех пользователей, которые могут залогиниться.

Нет. Это запрос к Базе Данных, а не "к спринг секьюрити".

questionerдля спринг секурити важны 3 поля: USERNAME, PASSWORD, CASE.

CASE это не поле. Поле это ENABLED. :D

questionerМы сами хотим добавить ограничение на email в этой таблице, что он должен быть каким?

Ты спрашиваешь хотим мы сами, или хочет кто-то другой? Что за вопрос вообще "Мы сами хотим?"

questionerЕсли бы было написано
авторWHERE email=emailadress@gmail.com
то всё понятно, а тут какое ограничение наложено может быть?
Спринг подставляет имя юзера, которое ты ему пердал в этот запрос. Что не понятного?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848450
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

BlazkowiczТы спрашиваешь хотим мы сами, или хочет кто-то другой? Что за вопрос вообще "Мы сами хотим?"
questioner
Мы хотим добавить ограничение на email в этой таблице.Точка.

Какое ограничение мы добавили этой строкой:

Код: sql
1.
WHERE email=?




BlazkowiczСпринг подставляет имя юзера, которое ты ему пердал в этот запрос. Что не понятного?

Ок. теперь понял видимо.

Если я напишу

Код: sql
1.
WHERE color=?



то он всё равно подставит то, что будет в этом инпуте:
Код: html
1.
<td><input type='text' name='j_username' /></td>
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848452
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerМы хотим добавить ограничение на email в этой таблице.Точка.

Хотим добавить ограничение на выборку, которую делает spring security из таблицы.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848454
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerМы хотим добавить ограничение на email в этой таблице.Точка.

Понятнее не стало. Троеточие.

questionerКакое ограничение мы добавили этой строкой:

Какое ещё ограничение??? Задача программиста написать запрос используя идентификаторы конкретной БД. В то время как Spring об этой БД ничего не знает и знать не желает. Ему нужна только выборка 3х значений.


questionerОк. теперь понял видимо.
Если я напишу
Код: sql
1.
WHERE color=?



то он всё равно подставит то, что будет в этом инпуте:
Код: html
1.
<td><input type='text' name='j_username' /></td>


Конечно. У запроса один параментр - имя пользователя. Spring не анализирует запрос. Он его запускает. Если у тебя имя пользователя в колонке COLOR, то так и пиши.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848455
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerХотим добавить ограничение на выборку, которую делает spring security из таблицы.
С какой целью?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848463
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerХотим добавить ограничение на выборку, которую делает spring security из таблицы.
С какой целью?

Допустим у нас расистская секьюрность и мы будем анализировать логин и пароль только для белых. Ну то есть по какой-то причине мы хотим анализировать таблицу не целиком.

BlazkowiczКонечно. У запроса один параметр - имя пользователя. Spring не анализирует запрос. Он его запускает. Если у тебя имя пользователя в колонке COLOR, то так и пиши.

Вот чувствую мы подошли к апогею моего вопроса.

Как Вы поняли, что у запроса один параметр и что это именно имя пользователя?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848471
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДопустим у нас расистская секьюрность и мы будем анализировать логин и пароль только для белых. Ну то есть по какой-то причине мы хотим анализировать таблицу не целиком.
Всё тот же совет что и раньше. Учим SQL:

SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
FROM TBL_USERS
WHERE email=? AND race='the only true race'

questionerКак Вы поняли, что у запроса один параметр и что это именно имя пользователя?
У кого-то Новый Год удался. :D
http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.security/spring-security-core/3.0.1.RELEASE/org/springframework/security/core/userdetails/jdbc/JdbcDaoImpl.java#JdbcDaoImpl.loadUsersByUsername(java.lang.String)

Ты так настойчиво просил исходники что даже ниразу не посмотрел в них.
Один аргумент - 3 поля на выходе.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
protected List<UserDetails> loadUsersByUsername(String username) {
        return getJdbcTemplate().query(usersByUsernameQuery, new String[] {username}, new RowMapper<UserDetails>() {
            public UserDetails mapRow(ResultSet rs, int rowNum) throws SQLException {
                String username = rs.getString(1);
                String password = rs.getString(2);
                boolean enabled = rs.getBoolean(3);
                return new User(username, password, enabled, true, true, true, AuthorityUtils.NO_AUTHORITIES);
            }

        });
    }
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848526
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да, такой запрос очевидно как написать. Я разъяснения привел чтобы ответить на вопрос зачем.


Да, этот метод видел, но где связь с xml конфигом?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848541
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДа, такой запрос очевидно как написать. Я разъяснения привел чтобы ответить на вопрос зачем.

Сам спросил, сам ответил? :D

questionerДа, этот метод видел, но где связь с xml конфигом?
class JdbcDaoImpl implements UserDetailsService это jdbc-user-service
class DaoAuthenticationProvider implements AuthenticationProvider, вроде как authentication-provider.

Вот и связь.
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848799
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а как Вы это выяснили?
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38848922
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа как Вы это выяснили?
Полистал мануал и JavaDoc
http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html
...
Рейтинг: 0 / 0
Spring security. jdbc-user-service data-source-ref что это значит?
    #38849317
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner
Код: sql
1.
2.
3.
SELECT USERNAME, PASSWORD, CASE ENABLED WHEN 1 THEN 'true' ELSE 'false' END 'ENABLED'
         FROM TBL_USERS
         WHERE USERNAME=?;"

Что значит этот запрос?Выведи имя пользователя и перекодируй значения колонки Enabled (1 -> true, всё остальное -> false). Ну и параметр отбора по имени пользователя.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring security. jdbc-user-service data-source-ref что это значит?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]