栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合shiro-记住我

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合shiro-记住我

源码:https://gitee.com/xxxiaowu/springboot-shiro

首先导入依赖


    org.apache.shiro
    shiro-spring
    1.8.0



    com.github.theborakompanioni
    thymeleaf-extras-shiro
    2.1.0

在前端添加记住我的按钮

   记住我

修改controller,把rememberMe封装到用户登录数据中

 @RequestMapping("/login")
    public String Login(String username, String password, Model model,boolean rememberMe){
        System.out.println("======================>"+rememberMe);
        //获取当前用户
        Subject subject = SecurityUtils.getSubject();
        //封装用户的登录数据
        UsernamePasswordToken token = new UsernamePasswordToken(username,password,rememberMe);

        try {
            //执行登录方法
            subject.login(token);
            return "index";
        } catch (UnknownAccountException e) {
            model.addAttribute("msg","用户名不存在");
            return "login";
        } catch (IncorrectCredentialsException e){
            model.addAttribute("msg","密码错误");
            return "login";
        }
    }

在ShiroConfig里边注入rememberMe

//DefaultWebSecurityManager
    @Bean(name = "securityManager")
    public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();

        //关联UserRealm
        securityManager.setRealm(userRealm);

        //注入记住我
        securityManager.setRememberMeManager(getcookieRememberMeManager());

        return securityManager;
    }

    
    @Bean
    public Simplecookie getRemembercookie(){
        //这里边的rememberMe这个参数对应的就是前段记住我input标签的name属性
        Simplecookie simplecookie = new Simplecookie("rememberMe");
        //这个是cookie过期的时间单位是 秒
        simplecookie.setMaxAge(60*60);
        return simplecookie;
    }

    
    @Bean
    public cookieRememberMeManager getcookieRememberMeManager(){
        cookieRememberMeManager cookieRememberMeManager = new cookieRememberMeManager();
        cookieRememberMeManager.setcookie(getRemembercookie());

        //cookieRememberMeManager.setCipherKey()
        // 对rememberMe cookie 加密 长度必须是16位,不安然会报异常
        cookieRememberMeManager.setCipherKey("ChengXuYuanYiMei".getBytes());

        return cookieRememberMeManager;
    }

这样就是实现了记住我功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号