【问题标题】:Spring security 4 custom jdbc authenticationSpring Security 4 自定义 jdbc 身份验证
【发布时间】:2016-03-07 06:46:36
【问题描述】:

我正在使用 spring boot、spring mvc 4、spring security 4 和 mysql 作为新 Web 应用程序的数据存储,我有两个问题

  1. 之前没用过spring security,但是看到之后,有个疑问是关于用来查找用户权限的查询:为什么用username而不是user id。我的意思是根据用户 ID 搜索权限要快得多,并且可以在将来更改用户名。我试图重载 usersByUsernameQuery 和 authorityByUsernameQuery 但使用用户 id 但它不起作用(即使它起作用,该方法的名称也困扰着我)..所以请有人向我解释他们为什么使用用户名?

  2. 1234563在 Spring 中 .. 加密的 salt 部分也是如此,Spring 内部知道如何使用它,所以我不应该担心迭代次数、成本和 salt 存储?

【问题讨论】:

  • 请一次提问。

标签: spring-mvc spring-security spring-jdbc


【解决方案1】:

1) 我不明白这个问题,因为如果你必须找到一个名为“Quentin”的用户的权限,你怎么知道“Quentin”的 id ?

请查看我在登录时用于检索用户的查询

<authentication-manager>
        <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 users WHERE BINARY username=?"
                authorities-by-username-query="SELECT username, authority FROM users WHERE BINARY username=?"
                id="jdbcUserService" />
            <password-encoder ref="passwordEncoder" hash="bcrypt" />
        </authentication-provider>
    </authentication-manager>
<beans:bean id="passwordEncoder"
    class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />

2) salt 与密码一起保存。有一个惊人的解释 here 这是如何完成的

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2014-12-13
    • 2015-04-17
    • 2016-08-05
    • 2020-12-05
    • 2015-04-27
    • 2014-01-12
    • 2016-09-05
    • 2021-04-21
    相关资源
    最近更新 更多