有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密代码。
而前台,是在输完用户名和密码后,点击登陆按钮的时候调用相应的方法进行加密并发请求传输。
但是测试过程中却发现了一个问题,就是在有的时候输完用户名、密码和验证码以后回车,后台会报如下的数组下标越界的异常:
java.lang.ArrayIndexOutOfBoundsException: 5at org.jasig.cas.util.Base64Util.decode(Base64Util.java:41)at org.jasig.cas.authentication.MyAcceptUsersAuthenticationHandler.authenticateUsernamePasswordInternal(MyAcceptUsersAuthenticationHandler.java:32)at org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.doAuthentication(AbstractUsernamePasswordAuthenticationHandler.java:71)at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate_aroundBody2(AbstractPreAndPostProcessingAuthenticationHandler.java:85)at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate_aroundBody3$advice(AbstractPreAndPostProcessingAuthenticationHandler.java:57)at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:1)at org.jasig.cas.authentication.AuthenticationManagerImpl.authenticateAndObtainPrincipal(AuthenticationManagerImpl.java:93)at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate_aroundBody0(AbstractAuthenticationManager.java:57)at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate_aroundBody1$advice(AbstractAuthenticationManager.java:57)at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:1)at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)at org.perf4j.aop.AbstractTimingAspect$1.proceed(AbstractTimingAspect.java:47)at org.perf4j.aop.AgnosticTimingAspect.runProfiledMethod(AgnosticTimingAspect.java:53)at org.perf4j.aop.AbstractTimingAspect.doPerfLogging(AbstractTimingAspect.java:45)at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)at com.github.inspektr.audit.AuditTrailManagementAspect.handleAuditTrail(AuditTrailManagementAspect.java:126)at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)at com.sun.proxy.$Proxy24.authenticate(Unknown Source)at org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket_aroundBody10(CentralAuthenticationServiceImpl.java:477)at org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket_aroundBody11$advice(CentralAuthenticationServiceImpl.java:57)at org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket(CentralAuthenticationServiceImpl.java:1)at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)at org.perf4j.aop.AbstractTimingAspect$1.proceed(AbstractTimingAspect.java:47)at org.perf4j.aop.AgnosticTimingAspect.runProfiledMethod(AgnosticTimingAspect.java:53)at org.perf4j.aop.AbstractTimingAspect.doPerfLogging(AbstractTimingAspect.java:45)at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)at com.github.inspektr.audit.AuditTrailManagementAspect.handleAuditTrail(AuditTrailManagementAspect.java:126)at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)at com.sun.proxy.$Proxy25.createTicketGrantingTicket(Unknown Source)at org.jasig.cas.authentication.ImageVaditeAuthenticationViaFormAction.submit(ImageVaditeAuthenticationViaFormAction.java:124)at sun.reflect.GeneratedMethodAccessor71.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:851)at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1253)at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)at ognl.ASTMethod.getValueBody(ASTMethod.java:90)at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)at ognl.SimpleNode.getValue(SimpleNode.java:258)at ognl.ASTChain.getValueBody(ASTChain.java:141)at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)at ognl.SimpleNode.getValue(SimpleNode.java:258)at ognl.Ognl.getValue(Ognl.java:494)at org.springframework.binding.expression.ognl.OgnlExpression.getValue(OgnlExpression.java:85)at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:75)at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)at org.springframework.webflow.engine.State.enter(State.java:194)at org.springframework.webflow.engine.Transition.execute(Transition.java:227)at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:393)at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:388)at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)at org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:232)at org.springframework.webflow.engine.ViewState.resume(ViewState.java:196)at org.springframework.webflow.engine.Flow.resume(Flow.java:545)at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:261)at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)at org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody2(SafeDispatcherServlet.java:128)at org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody3$advice(SafeDispatcherServlet.java:57)at org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:1)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.jasig.cas.util.CookieFilter.doFilter(CookieFilter.java:57)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:745)

debug之后发现了问题所在:
正常情况下,登陆时前台传递的用户名和密码应该是md5加密后的数据,但是在上面那种情况下传递的却并没有加密,在input中输入了什么,传递的依然还是什么。
这也就是说,回车之后根本就没有走md5加密数据的方法,因此,不是md5加密的,却用了md5加密的方式解密,程序便出现如上的异常。
最终的解决办法是在登陆界面的那些input中加上如下属性:
οnkeypress="if(event.keyCode == 13) return false;"

也就是禁用了input上的enter键,在input上回车就不会再发请求到后台,也就不会再出现上述的问题。
参考文档:event.keyCode用法及列表

md5加密用户登陆遇到的问题及解决办法相关推荐

  1. VMware虚拟机忘记Linux用户登陆密码,重置密码解决办法

    VMware虚拟机安装Linux系统,忘记用户登陆密码怎么解决,可以通过重启VMware虚拟机进入系统操作界面去重置密码,重新修改密码. 下面是详细的操作步骤: 1.点击栏目上的倒三角形,选择重新启动 ...

  2. 【转】无法登陆SQL server 服务器的解决办法

    无法登陆SQL server 服务器的解决办法 ********************************************** 二."无法连接到服务器,用户xxx登陆失败&qu ...

  3. oracle查询用户时候被锁,Oracle用户被锁的原因及解决办法

    在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 sql> alter session set nls_date_format='yyy ...

  4. steam登不上显示连接服务器错误,steam登陆网络连接错误代码的解决办法

    下面就是为您整理了的steam登陆网络连接错误代码的答案 steam登陆网络连接错误代码内容导航1.steam服务器连接失败,错误代码-118 steam服务器连接失败错误代码-118,解决方法: 1 ...

  5. vsftp虚拟用户无法上传文件,解决办法

    vsftp虚拟用户无法上传文件,解决办法 1.打开/etc/vsftpd 目录中的vsftpd.conf文件,查找:guest_username=xxx,这里指的是vsftpd虚拟用户对应的实 际系统 ...

  6. 异常详细信息: System.Data.SqlClient.SqlException:用户 ‘IIS APPPOOL\DefaultAppPool‘ 登录失败解决办法

    异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法 参考文章: (1)异常详细信息: ...

  7. Winform中简单使用MD5加密用户登录密码

    场景 MD5加密登录密码效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. ...

  8. 远程计算机不能访问权限,远程桌面登录提示必须拥有终端服务器用户访问权限的4种解决办法...

    在默认情况下,'远程桌面用户'组的成员拥有这些权限.如果您不是'远程桌面用户'组或其他拥有这些权限的组的成员,或者如果'远程桌面用户'组没有这些权限,您必须被手动授予这些权限". 下面小编整 ...

  9. linux系统获取用户信息失败怎么办,异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法...

    最近在做.NET项目,因为本人以前做Java较多,所以对.NET不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...

最新文章

  1. SQL 中循环、for循环、游标
  2. ssh-keygen
  3. 微信JS-SDK使用步骤(以微信扫一扫为例)
  4. HDU-2159 FATE 二维背包
  5. find : 路径必须在表达式之前
  6. 21行代码AC_HDU 5935 Car【贪心, 精度】
  7. Spring Boot JDBC
  8. c语言数组前缀和,关于最大子数组问题
  9. [翻译]AppSettings In web.config by K.Scott Allen
  10. SQL群集多实例卸载、安装
  11. ros机器人编程实践(12.1)- 用turtlebot仿真巡线机器人(含turtlebot在kinetic安装教程)
  12. 闲置eSATA接口影响Windows 7启动速度
  13. “数据打通”不等于“数据共融”,智能数据营销解决方案了解一下
  14. 疫情之后的2020长什么样
  15. Laravel SQL查询中first, pluck与lists方法
  16. 学习笔记—什么是微数据?itemscope/itemtype/itemprop(搜索引擎seo优化)
  17. 如何写出高质量的文章:从战略到战术
  18. 【学习周报】深度学习笔记第二周
  19. 特岗计算机考试面试,你应该知道的特岗教师面试注意事项!快来收藏吧!
  20. 快速理解数据库函数依赖(平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递依赖)

热门文章

  1. 【转】北京四中学习方法
  2. PADS Layout VX.2.3 修改层名
  3. linux每日命令(15):tail命令
  4. ajax 跨域请求,每次会发送两个请求?
  5. 爱立信:SDN/NFV助力面向5G以及工业互联网的ICT转型
  6. 《C++游戏编程入门(第4版)》——1.8 Lost Fortune简介
  7. 使用pg_stat_statement监控pgsql遇到的问题
  8. 剑指offer5 从尾到头打印链表
  9. web前端开发怎么学,web教程资源
  10. 【Java】全站编码过滤器GenericEncodingFilter代码与配置