更改Spring Security.xml文件中的查询,仅使用一个表而不是两个

时间:2015-08-18 18:17:42

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

在Spring安全提供的jdbc-user-service中,我看到demo项目做了这样的事情:

    <authentication-manager>
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="select username,password, enabled from users where username=?"
                authorities-by-username-query="select username, role from user_roles where username =?  " />
        </authentication-provider>
    </authentication-manager>

现在,当在数据库中创建两个表usersuser_roles时,这种方法可行。

现在我要做的是不是创建两个单独的表,而是只想创建一个包含所有这些属性的表。登录时我不想username而是使用user_email。可能吗?如何更改<jdbc-user-service/>?我尝试了几种方法,但却出错了。

1 个答案:

答案 0 :(得分:0)

编辑这两个查询时对您施加的限制不是太强烈。你只需要尊重:

  • 返回值(您选择的值):用户名+密码+已启用;用户名+角色
  • 输入参数:用户名

除此之外,您应该能够修改查询并使用任何类型的表结构来表示您的用户结构。

注意: 在默认实现中不仅只有一个而是两个的原因是允许为用户和角色创建多对多连接。实际上,这意味着您可以为同一个用户分配多个角色(例如“评论者”,“编辑者”,“管理员”)。对于一个非常简单的应用程序来说,这可能不是必需的,但它很快就会成为必备功能。