针对DB的Spring安全认证

时间:2012-05-10 20:33:43

标签: spring spring-security

在Spring中,我尝试对DB进行身份验证。使用此配置成功:

<jdbc-user-service data-source-ref="dataSource"

       users-by-username-query="
          select username,password, enabled 
          from user where username=?" 

       authorities-by-username-query="
          select u.username, ur.authority from user u, user_roles ur 
          where u.id = ur.user_id and u.username =?  " 

    />

但我无法登录,直到我在user_roles中为每个用户添加一行至少指定ROLE_USER ...有没有办法在没有在DB中添加记录的情况下向所有用户授予ROLE_USER? 提前谢谢

1 个答案:

答案 0 :(得分:0)

默认情况下,您可以在 authority-by-username-query 中返回该角色。例如,以下查询将在union的第一部分返回,数据库中存在的用户/角色对(您已经拥有的查询)和union的第二部分将返回每个用户一对 user / ROLE_USER 因此,即使user_roles表中不存在 ROLE_USER ,现在每个用户都将拥有 ROLE_USER 角色

select u.username, ur.authority from user u, user_roles ur 
          where u.id = ur.user_id and u.username =?
union
select u.username, 'ROLE_USER' from user u