博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring security
阅读量:4662 次
发布时间:2019-06-09

本文共 3283 字,大约阅读时间需要 10 分钟。

很想吐槽的一个东西

尝试了spring的authentication,使用org.acegisecurity.userdetails.jdbc.JdbcDaoImpl的authenticationDao

代码如下:

1 package org.hawklithm.acegi; 2  3 import org.acegisecurity.Authentication; 4 import org.acegisecurity.providers.ProviderManager; 5 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7  8 public class AuthenticateMain { 9     public void go() {10         UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("hawky", "root");11         ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("spring-acegi.xml");12         ProviderManager manager=(ProviderManager) context.getBean("authenticationManager");13         Authentication auth=manager.authenticate(authRequest);14         System.out.println("name: "+auth.getName());15         System.out.println("String: "+auth.toString());16         System.out.println("authenticated: "+auth.isAuthenticated());17     }18 19     public static void main(String args[]) {20         AuthenticateMain auth = new AuthenticateMain();21         auth.go();22     }23 }

配置文件:

select username,password from user where username= ?
select username,authority from user_privileges where username= ?

刚开始一直报错:

Exception in thread "main" org.acegisecurity.AuthenticationServiceException: PreparedStatementCallback; uncategorized SQLException for SQL [                select username,password from user where username= ?            ]; SQL state [S1009]; error code [0]; Column Index out of range, 3 > 2. ; nested exception is java.sql.SQLException: Column Index out of range, 3 > 2. ; nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [                select username,password from user where username= ?            ]; SQL state [S1009]; error code [0]; Column Index out of range, 3 > 2. ; nested exception is java.sql.SQLException: Column Index out of range, 3 > 2.     at org.acegisecurity.providers.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:102)    at org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:122)    at org.acegisecurity.providers.ProviderManager.doAuthentication(ProviderManager.java:200)    at org.acegisecurity.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:47)    at org.hawklithm.acegi.AuthenticateMain.go(AuthenticateMain.java:13)    at org.hawklithm.acegi.AuthenticateMain.main(AuthenticateMain.java:21)

为什么呢?为什么会越界呢?

疑惑了很久,网上各种解答,但是各种尝试无果

后来想起书上的例子里面是查询username,password和enable,然后添加上了enable,结果就搞定了,太坑了,居然必须加入enable参数

 

即,将sql语句select username,password from user where username= ?改为select username,password,enable from user where username= ?

 

转载于:https://www.cnblogs.com/waterfalleagle/p/3465711.html

你可能感兴趣的文章
[设计模式] 索引
查看>>
IntelliJ IDEA mac 快捷键
查看>>
DEDECMS之八 漏洞错误和疑难杂症
查看>>
Dynamic Method Binding in Delphi 动态方法绑定
查看>>
ashx入侵
查看>>
UITextField 自定义搜索栏
查看>>
DATEPART() 函数用于返回日期/时间的单独部分
查看>>
汇编语言第三章知识梳理及思考
查看>>
上传图片,JS中等比压缩返回BASE64格式String
查看>>
php 返回该字符最后一次出现到字符串到开始
查看>>
spark osx:WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform
查看>>
The file * couldn't be opened because you don't have permission to view it
查看>>
ASP.NET MVC4框架揭秘 源代码下载
查看>>
MFC使用SendMessage()发送自定义消息实现进程间通信
查看>>
JAVA第二章作业
查看>>
CentOS普通用户添加sudo权限
查看>>
微信小程序三级联动自定义组件component
查看>>
Hive记录-配置客户端可视化管理工具远程连接
查看>>
oracle学习之临时表
查看>>
c++ 常见问题之 vector 和数组
查看>>