securityManager接口

本文基于张开涛老师的Shiro教程,深入分析securityManager接口,它继承了Authenticator、Authorizer和SessionManager接口。主要内容包括:1) securityManager的登录、登出和创建Subject方法;2) Authenticator的认证方法;3) Authorizer的权限检查和角色验证方法;4) SessionManager的会话创建和获取方法。通过这些接口的分析,有助于理解Shiro的权限管理和会话管理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习张开涛老师的shiro教程中,很多东西理解不是太深刻,现在对源码进行一部分分析,来加深自己对这块的理解。

接口securityManager继承了其它的三个接口Authenticator(认证接口),Authorizer(授权接口),SessionManager(会话接口),现在对这四个接口进行分析:

1.securityManager定义的方法:

1.1.登录

Subject login(Subject subject, AuthenticationToken authenticationToken) throws AuthenticationException;

1.2.登出

void logout(Subject subject);

1.3.创建subject

Subject createSubject(SubjectContext context);

2.Authenticator定义的方法

2.1.认证方法

public AuthenticationInfo authenticate(AuthenticationToken authenticationToken)
            throws AuthenticationException;

3.Authorizer定义的方法

3.1.是否拥有权限(返回boolean型)

boolean isPermitted(PrincipalCollection principals, String permission);

boolean isPermitted(PrincipalCollection subjectPrincipal, Permission permission);

boolean[] isPermitted(PrincipalCollection subjectPrincipal, String... permissions);

boolean[] isPermitted(PrincipalCollection subjectPrincipal, List<Permission> permissions);

boolean isPermittedAll(PrincipalCollection subjectPrincipal, String... permissions);

 boolean isPermittedAll(PrincipalCollection subjectPrincipal, Collection<Permission> permissions);

3.2检测是否拥有权限(如果没有权限,会抛出异常)

void checkPermission(PrincipalCollection subjectPrincipal, String permission) throws AuthorizationException;

void checkPermission(PrincipalCollection subjectPrincipal, Permission permission) throws AuthorizationException;

void checkPermissions(PrincipalCollection subjectPrincipal, String... permissions) throws AuthorizationException;

void checkPermissions(PrincipalCollection subjectPrincipal, Collection<Permission> permissions) throws AuthorizationException;

3.3.是否拥有角色

boolean hasRole(PrincipalCollection subjectPrincipal, String roleIdentifier);

boolean[] hasRoles(PrincipalCollection subjectPrincipal, List<String> roleIdentifiers);

boolean hasAllRoles(PrincipalCollection subjectPrincipal, Collection<String> roleIdentifiers);

3.4.检测是否拥有角色(如果没有角色,会抛出异常)

void checkRole(PrincipalCollection subjectPrincipal, String roleIdentifier) throws AuthorizationException;

void checkRoles(PrincipalCollection subjectPrincipal, Collection<String> roleIdentifiers) throws AuthorizationException;

void checkRoles(PrincipalCollection subjectPrincipal, String... roleIdentifiers) throws AuthorizationException;

4.SessionManager定义的方法

4.1.创建session

Session start(SessionContext context);

4.2.根据session的key获取session

Session getSession(SessionKey key) throws SessionException;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值