首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全4自定义jdbc身份验证

Spring安全4自定义jdbc身份验证
EN

Stack Overflow用户
提问于 2016-03-07 06:46:36
回答 1查看 540关注 0票数 0

我使用spring、spring 4、SpringSecurity4和mysql作为我的新web应用程序的数据存储库,我有两个问题

  1. 我以前从未使用过spring安全性,但在看到它之后,我有一个关于用于查找用户权限的查询的问题:为什么它使用用户名而不是用户id。我的意思是,根据用户id搜索权限要快得多,并且可以在将来更改用户名。我试图重载usersByUsernameQuery和authoritiesByUsernameQuery,但是使用了用户id,但它没有工作(即使它有效,方法的名称也困扰着我)。所以请有人向我解释一下他们为什么使用这个用户名吗?
  2. 在我之前开发的php web应用程序中,如果我们想使用BCrypt,我们通常会将盐分和密码一起存储在DB中。但是我注意到它不需要在春季有这个专栏。那么,加密的salt部分和Spring内部是否知道如何使用它,所以我不应该担心迭代次数、成本和盐存储问题?
EN

回答 1

Stack Overflow用户

发布于 2016-03-07 17:35:53

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

请看一下我在登录时检索用户的查询。

代码语言:javascript
复制
<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)盐与密码一起保存。关于这是如何做到的,here有一个很棒的解释

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35837724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档