Database Spring:用户登录未从数据库读取
我正在尝试设置一个类似于这个问题的Spring安全登录。这个问题似乎与我的问题相同,我尝试了解决方案,但没有成功 使用MySQL工作台,我的SQL是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
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进行过任何调试,因此您的建议对我来说非常陌生!