国内精品久久久久久久星辰影视-亚洲天堂久久精品成人-亚洲国产成人综合青青-91精品啪在线看国产网站-日韩一区二区在线观看

?
    開(kāi)發(fā)技術(shù) / Technology

    如何使用Shiro實(shí)現用戶(hù)注冊成功后自動(dòng)登錄?

    日期:2015年4月8日  作者:zhjw  來(lái)源:互聯(lián)網(wǎng)    點(diǎn)擊:1239

    10

    如何使用Shiro實(shí)現用戶(hù)注冊成功后自動(dòng)登錄?15

    之前用戶(hù)注冊后是先跳到登錄頁(yè)面: 
    Java代碼  收藏代碼
    1. @RequestMapping(method = RequestMethod.POST)  
    2. public String register(@Valid User user, RedirectAttributes redirectAttributes) {  
    3.     accountService.registerUser(user);  
    4.     redirectAttributes.addFlashAttribute("username",  
    5. user.getLoginName());  
    6.     return "redirect:/login";  
    7. }  

    現在要求用戶(hù)注冊成功后自動(dòng)登錄,改寫(xiě)如下: 
    Java代碼  收藏代碼
    1. @RequestMapping(method = RequestMethod.POST)  
    2. public String register(@Valid User user, RedirectAttributes redirectAttributes) {  
    3.     accountService.registerUser(user);  
    4.     UsernamePasswordToken token = new UsernamePasswordToken();  
    5.     token.setUsername(user.getLoginName());  
    6.     token.setPassword(user.getPassword().toCharArray());  
    7.     SecurityUtils.getSubject().login(token);  
    8.     return "redirect:/";  
    9. }  

    結果報錯: 
    Java代碼  收藏代碼
    1. org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - user01, rememberMe=false] did not match the expected credentials.  

    問(wèn)題補充:問(wèn)題解決了,改寫(xiě)成token.setPassword(user.getPlainPassword().toCharArray()); 就可以了。因為我的user的plainPassword是明文,user的password是hash。