Database Spring:用户登录未从数据库读取

Database Spring:用户登录未从数据库读取,database,spring,security,spring-mvc,jdbc,Database,Spring,Security,Spring Mvc,Jdbc,我正在尝试设置一个类似于这个问题的Spring安全登录。这个问题似乎与我的问题相同,我尝试了解决方案,但没有成功 使用MySQL工作台,我的SQL是 CREATE TABLE IF NOT EXISTS `mtc`.`authorities` ( `username` VARCHAR(45) NOT NULL, `authority` VARCHAR(45) NULL DEFAULT NULL, PRIMARY KEY (`username`)) ENGINE = InnoDB DE

我正在尝试设置一个类似于这个问题的Spring安全登录。这个问题似乎与我的问题相同,我尝试了解决方案,但没有成功

使用MySQL工作台,我的SQL是

CREATE TABLE IF NOT EXISTS `mtc`.`authorities` (
  `username` VARCHAR(45) NOT NULL,
  `authority` VARCHAR(45) NULL DEFAULT NULL,
  PRIMARY KEY (`username`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `mtc`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mtc`.`users` (
  `username` VARCHAR(45) NOT NULL,
  `name` VARCHAR(45) NULL DEFAULT NULL,
  `password` VARCHAR(45) NULL DEFAULT NULL,
  `gender` VARCHAR(45) NULL DEFAULT NULL,
  `member_type` VARCHAR(45) NULL DEFAULT NULL,
  `grade` VARCHAR(45) NULL DEFAULT NULL,
  `ad_line1` VARCHAR(45) NULL DEFAULT NULL,
  `ad_line2` VARCHAR(45) NULL DEFAULT NULL,
  `ad_city` VARCHAR(45) NULL DEFAULT NULL,
  `ad_county` VARCHAR(45) NULL DEFAULT NULL,
  `contact_num` VARCHAR(45) NULL DEFAULT NULL,
  `em_con_name` VARCHAR(45) NULL DEFAULT NULL,
  `em_con_num` VARCHAR(45) NULL DEFAULT NULL,
  PRIMARY KEY (`username`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
我所有的数据库工作都很好,我可以通过jdbc连接,我可以显示信息,我可以写入数据库。安全性也在发挥作用,因为我可以启用和阻止对页面的访问。我也可以使用XML中的硬编码值登录。如果我删除这些值,我仍然会遇到同样的问题

security-context.xml

<security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="chris" authorities="admin"
                    password="chris" />
                <security:user name="sorin" authorities="admin"
                    password="sorin" />
            </security:user-service>
        </security:authentication-provider>
        <security:authentication-provider>
            <security:jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="select username,password, enabled from users where username = ?" />
        </security:authentication-provider>
    </security:authentication-manager>


    <security:http use-expressions="true">
        <security:intercept-url pattern="/static/**" access="permitAll" />
        <security:intercept-url pattern="/login" access="permitAll" />
        <security:intercept-url pattern="/members" access="isAuthenticated()" />
        <security:intercept-url pattern="/" access="permitAll" />
        <security:intercept-url pattern="/createmembers" access="permitAll" />
        <security:intercept-url pattern="/register" access="permitAll" />
        <security:intercept-url pattern="/registerSuccess" access="permitAll" />
        <security:intercept-url pattern="/**" access="denyAll" />
        <security:form-login login-page="/login"
            authentication-failure-url="/login?error=true" />
    </security:http>
我的登录页面只是在重定向到登录页面时给我error=true标记,因此它似乎设置正确


有什么想法吗

首先,您的users表没有名为enabled.Deformes的列。我导入了错误的MySQL模型,因为我在两台机器之间工作。这似乎已经修复了它,但我100%确定我在另一台机器上启用了,但它不工作。我将为那台机器复制这个模型。如果您在调试级别记录org.springframework.security的输出,您会发现问题更容易解决。我明天将对此进行研究。我认为问题可能是我在另一个数据库上启用了默认值0。我必须在早上检查。当我检查方法安全性时,它再次停止工作,并将角色从admin更改为ROLE_admin,从member更改为ROLE_member。看不出任何理由。你能建议怎么做你的建议吗?我从未真正使用Eclipse进行过任何调试,因此您的建议对我来说非常陌生!