SecurityManager系列

下面这张图是从网上找的securityManager的结构图,说明如下

1.在Web项目中使用的DefaultWebSecurityManager这个类,是继承了DefaultSecurityManager这个类,并且实现了

WebSecurityManager接口,图中没有提现出来。

2.图中除了DefaultSecurityManager之外,其他的都是抽象类

这里写图片描述

3.各个类及抽象类的有参构造方法如下表格,注意是有参构造方法

CachingSecurityManagerpublic CachingSecurityManager() {}
RealmSecurityManagerpublic RealmSecurityManager() {
        super();
  }
AuthenticatingSecurityManagerpublic AuthenticatingSecurityManager() {
        super();
        this.authenticator = new ModularRealmAuthenticator();
  }
AuthorizingSecurityManagerpublic AuthorizingSecurityManager() {
        super();
        this.authorizer = new ModularRealmAuthorizer();
 }
SessionsSecurityManagerpublic SessionsSecurityManager() {
        super();
        this.sessionManager = new DefaultSessionManager();
        applyCacheManagerToSessionManager();
 }
DefaultSecurityManager

public DefaultSecurityManager() {
        super();
        this.subjectFactory = new DefaultSubjectFactory();
        this.subjectDAO = new DefaultSubjectDAO();
  }

public DefaultSecurityManager(Realm singleRealm) {
        this();
        setRealm(singleRealm);
  }

public DefaultSecurityManager(Collection<Realm> realms) {
        this();
        setRealms(realms);
    }

DefaultWebSecurityManager

public DefaultWebSecurityManager() {
        super();
        ((DefaultSubjectDAO) this.subjectDAO).setSessionStorageEvaluator(new DefaultWebSessionStorageEvaluator());
        this.sessionMode = HTTP_SESSION_MODE;
        setSubjectFactory(new DefaultWebSubjectFactory());
        setRememberMeManager(new CookieRememberMeManager());
        setSessionManager(new ServletContainerSessionManager());
    }

    @SuppressWarnings({"UnusedDeclaration"})
    public DefaultWebSecurityManager(Realm singleRealm) {
        this();
        setRealm(singleRealm);
    }

    @SuppressWarnings({"UnusedDeclaration"})
    public DefaultWebSecurityManager(Collection<Realm> realms) {
        this();
        setRealms(realms);
    }

 通过构造方法我们知道,RealmSecurityManager、CachingSecurityManager并没有设置默认的对象,所以这个是交给开发人员自己配置的,这也是我们需要在shiro配置文件中进行配置的。

在DefaultWebSecurityManager中默认使用的sessionManager是ServletContainerSessionManager做会话管理,其直接使用Servlet容器的会话,所以不支持不支持SessionDAO,因此如果我们想做自己的session管理,则需要使用

DefaultWebSessionManager。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值