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

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

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

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

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

questionerКто и каким образом подставляет вместо знака вопроса значение?
jdbc-user-service. таким же образом как и любой другой код работающий с JDBC API через PreparedStatement
...
Рейтинг: 0 / 0
05.01.2015, 00:30
    #38848264
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 10:25
    #38848327
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 12:02
    #38848355
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 12:15
    #38848364
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
questionerВопрос в том откуда он берет это значение("Vasya").
Из формы ввода логина и пароля, например. Зависит от того к чему Spring Security прикручена.
Ты остальные статьи этой серии проигнорировал?
http://howtodoinjava.com/2013/04/16/login-form-based-spring-3-security-example/
...
Рейтинг: 0 / 0
05.01.2015, 12:48
    #38848383
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 12:50
    #38848384
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 13:10
    #38848395
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 13:19
    #38848402
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
questioner,

Ты же привел выше форму и контроллер. Из них и берет.
...
Рейтинг: 0 / 0
05.01.2015, 14:32
    #38848445
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 14:36
    #38848447
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
questionerнеужели непонятно, что я спрашиваю ?)))

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

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

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

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

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

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

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

questionerЕсли бы было написано
авторWHERE email=emailadress@gmail.com
то всё понятно, а тут какое ограничение наложено может быть?
Спринг подставляет имя юзера, которое ты ему пердал в этот запрос. Что не понятного?
...
Рейтинг: 0 / 0
05.01.2015, 14:47
    #38848450
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 14:49
    #38848452
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
questionerМы хотим добавить ограничение на email в этой таблице.Точка.

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

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

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

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


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



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


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

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

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

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

Как Вы поняли, что у запроса один параметр и что это именно имя пользователя?
...
Рейтинг: 0 / 0
05.01.2015, 15:12
    #38848471
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
05.01.2015, 16:47
    #38848526
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
Blazkowicz,

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


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

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

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

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

а как Вы это выяснили?
...
Рейтинг: 0 / 0
06.01.2015, 10:25
    #38848922
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
questionerа как Вы это выяснили?
Полистал мануал и JavaDoc
http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html
...
Рейтинг: 0 / 0
06.01.2015, 16:40
    #38849317
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring security. jdbc-user-service data-source-ref что это значит?
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring security. jdbc-user-service data-source-ref что это значит? / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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