代码之家  ›  专栏  ›  技术社区  ›  Rakesh Goyal

使用usersbyusernamequery使用Spring安全性进行身份验证

  •  1
  • Rakesh Goyal  · 技术社区  · 14 年前

    在用户表中,corporateid和username的组合是唯一的。

    我知道Spring提供了一种为身份验证编写自定义查询的机制。

    <bean id="authenticationDao"
        class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
        <property name="dataSource" ref bean="dataSource" />
        <property name="usersByUsernameQuery">
            <value>
                SELECT username,password,enabled
                FROM User WHERE username=? and corporateId=?
            </value>
        </property>
    </bean>
    

    但这里的问题是我们在查询中有两个绑定变量,而不是一个。我不确定如何将Spring安全框架与这个DB结构结合使用。 用户表的主键是userid。在调用authenticate方法之前是否需要放置预处理器,我可以通过用户名和corporateid的组合来获取userid,然后使用它 选择用户名、密码、已启用 从userid=的用户? 查询。

    任何帮助都将被高度谴责。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

    我认为您需要自己的身份验证提供者,因为您计划尝试与用户名、密码和公司ID匹配,一旦身份验证成功,UserDetailsService将返回对象。

    看看这个问题和答案,我想它会引导你走上正确的道路。

    Creating a custom authentication with Acegi/Spring Security

        2
  •  0
  •   axtavt    14 年前

    如果默认 JdbcDaoImpl 不满足你的需求,你可以实现你自己的 UserDetailsService :

    <bean id="authenticationDao" 
        class="... your implementation class ..." />