问题描述
@RequestMapping(value="/login",method=RequestMethod.POST)publicStringlogin(@ValidUseruser,BindingResultbindingResult,RedirectAttributesredirectAttributes){try{if(bindingResult.hasErrors()){return"login";}SecurityUtils.getSubject().login(newUsernamePasswordToken(user.getUsername(),user.getPassword()));return"redirect:login";}catch(AuthenticationExceptione){redirectAttributes.addFlashAttribute("message","用户名或密码错误");return"redirect:login";}}
这是登录代码@OverrideprotectedAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenarg0)throwsAuthenticationException{UsernamePasswordTokentoken=(UsernamePasswordToken)arg0;//查询是否有此用户Useruser=userService.getByName(token.getUsername());if(user!=null){returnnewSimpleAuthenticationInfo(user.getUsername(),user.getPassword(),getName());}returnnull;}
这是登录验证,现在的问题是,无论我用户名密码输的正确与否,都提示用户名或密码错误这两段代码可能没有问题,但是想问问,这个问题怎么解决。
解决方案
本帖最后由 a64540339 于 2014-09-22 10:18:36 编辑
解决方案二:
你确定Useruser=userService.getByName(token.getUsername());if(user!=null){returnnewSimpleAuthenticationInfo(user.getUsername(),user.getPassword(),getName());}这里找到了用户?如果找到了,那把表现层那里的trycatch异常帖上来给看看?你可以到我的博客看看shiro的相关扩展文章,谢谢