Shiro-尚硅谷

六 shiro 会话管理

1. 概述:
Shiro-尚硅谷_第1张图片
2. 会话 相关 API

Session session = SecurityUtils.getSubject().getSession();
String sessionId = session.getId().toString();


3. 会话监听器
Shiro-尚硅谷_第2张图片
5. Session Dao
‘ 1)SessionDao 作用:
a:可以把 Session 写到数据库中,可对 Session 进行增删改查操作。
b:介绍:Shiro-尚硅谷_第3张图片‘ 2)Session Dao 类继承结构:Shiro-尚硅谷_第4张图片
在这里插入图片描述
要配置 sessionId 生成策略:(getSessionId() )

Shiro-尚硅谷_第5张图片
‘ 3) 会话验证调度器:(性能不好,用的不多)
Shiro-尚硅谷_第6张图片


七 shiro 缓存

1. CacheManagerAware 接口
Shiro-尚硅谷_第7张图片
2. Realm 缓存
Shiro-尚硅谷_第8张图片
Shiro-尚硅谷_第9张图片
3. Session 缓存


八 shiro 认证 和 记住我区别

1.概述

2. 认证 和 记住我区别(认证 / 记住我 二选一)
Shiro-尚硅谷_第10张图片
3. 建议(不敏感网页,认证 || 记住我 == true ,即可访问)
Shiro-尚硅谷_第11张图片
4. 身份验证相关的
Shiro-尚硅谷_第12张图片
5.配置
1)list.jsp,通过 验证/记住我 登陆,都可进行访问:
Shiro-尚硅谷_第13张图片
2)设置记住我:
Shiro-尚硅谷_第14张图片
Shiro-尚硅谷_第15张图片
3)rememberMeManager

    // 2:创建 安全管理器
    @Bean
    public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier(value = "realm") Realm realm,
                                                               RedisCacheManager redisCacheManager) {
        DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
        defaultWebSecurityManager.setRealm(realm);

        //配置 redis缓存管理器,将来换成 redis 缓存管理器
        defaultWebSecurityManager.setCacheManager(redisCacheManager);
        defaultWebSecurityManager.setRememberMeManager(rememberMeManager());

        return defaultWebSecurityManager;
    }

    /**
     * cookie管理对象;记住我功能,rememberMe管理器
     *
     * @return
     */
    public CookieRememberMeManager rememberMeManager() {
        CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
        cookieRememberMeManager.setCookie(rememberMeCookie());
        //rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)
        cookieRememberMeManager.setCipherKey(Base64.decode("4AvVhmFLUs0KTA3Kprsdag=="));
        return cookieRememberMeManager;
    }

    /**
     * cookie对象;会话Cookie模板 ,默认为: JSESSIONID 问题: 与SERVLET容器名冲突,重新定义为sid或rememberMe,自定义
     *
     * @return
     */
    public SimpleCookie rememberMeCookie() {
        //这个参数是cookie的名称,对应前端的checkbox的name = rememberMe
        SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
        //setcookie的httponly属性如果设为true的话,会增加对xss防护的安全系数。它有以下特点:

        //setcookie()的第七个参数
        //设为true后,只能通过http访问,javascript无法访问
        //防止xss读取cookie
        simpleCookie.setHttpOnly(true);
        simpleCookie.setPath("/");
        //
        simpleCookie.setMaxAge(2592000);
        return simpleCookie;
    }

你可能感兴趣的:(安全框架,css3,前端,css)