zoukankan      html  css  js  c++  java
  • 关于记住我的设置

    @Configuration
    public class ShiroConfig {
        @Autowired
        private MyRealm myRealm;
        @Bean
        public DefaultWebSecurityManager securityManager() {
            DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
            HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
            hashedCredentialsMatcher.setHashAlgorithmName("md5");
            hashedCredentialsMatcher.setHashIterations(2);
            myRealm.setCredentialsMatcher(hashedCredentialsMatcher);
            manager.setRealm(myRealm);
            manager.setRememberMeManager(rememberMeManager());
            return manager;
        }
        /**
         * cookie 属性设置
         */
        public SimpleCookie rememberMeCookie()
        {
            SimpleCookie cookie = new SimpleCookie("rememberMe");
    //        cookie.setDomain(domain);
            cookie.setPath("/");
            cookie.setHttpOnly(true);
            cookie.setMaxAge(30 * 24 * 60 * 60);
            return cookie;
        }
    
        /**
         * 记住我
         */
        public CookieRememberMeManager rememberMeManager()
        {
            CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
            cookieRememberMeManager.setCookie(rememberMeCookie());
            cookieRememberMeManager.setCipherKey(Base64.decode("MTIzNDU2NzgxMjM0NTY3OA=="));
            return cookieRememberMeManager;
        }
        @Bean
        public ShiroFilterChainDefinition shiroFilterChainDefinition() {
            DefaultShiroFilterChainDefinition definition = new DefaultShiroFilterChainDefinition();
            definition.addPathDefinition("/doLogin", "anon");
            definition.addPathDefinition("/logout", "logout");
            definition.addPathDefinition("/**", "user");
            return definition;
        }
    
        @Bean
        public ShiroDialect shiroDialect() {
            return new ShiroDialect();
        }
    }
    

      

    修改控制doLogin方法,在UsernamePasswordToken中添加第三个参数。表示是否启用remember me功能。

    此功能应该在页面中添加一个复选框,代码中直接假设用户勾选了复选框

    @RequestMapping("/doLogin")
    public String showLogin(User user){
        Subject subject = SecurityUtils.getSubject();
        try {
            //添加第三个参数,表示是否启用rememberme功能
            subject.login(new UsernamePasswordToken(user.getUsername(),user.getPassword(),true));
            return "redirect:/showIndex";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:/showLogin";
    }
    

      

  • 相关阅读:
    vue 组件之间的通讯方式
    vue 路由4种传参方式
    vue+axios封装已文件流的形式导出文件
    vue 开发环境正常打包之后背景图片无法访问或者element-ui的icon找不到
    vue 优化webpack引入CND
    microtime() — 返回当前 Unix 时间戳和微秒数
    将一个字符串分隔为组成它的字符
    Laravel 伪静态配置
    VSCode
    array_merge()&array_combine()合并数组函数
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14356086.html
Copyright © 2011-2022 走看看