Description Shiro
Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro 要简单的多,可以与Spring进行无缝集成。
Shiro的几个关键概念
Subject:一个安全术语,意指“当前用户”,这里的用户可以指人、第三方进程等其他事物。一旦获得Subject,你就可以立即获得你希望用Shiro为当前用户做的90%的事情,如登录、登出、访问会话、执行授权检查等 -。这里的关键点是Shiro的API非常直观,因为它反映了开发者以‘每个用户’思考安全控制的自然趋势。同时,在代码的任何地方都能很轻松地访问Subject,允许在任何需要的地方进行安全操作。
Subject subject = SecurityUtils .getSubject ();
subject .login (token );
SecurityManager:shiro框架的核心,管理所有用户更的安全操作,引用了多个内部嵌套安全组件(如Session的管理器,Realm等)
@ Bean (name = "securityManager" )
public DefaultWebSecurityManager securityManager (){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager ();
//设置Realm
securityManager .setRealm (shiroRealm ());
//设置session管理器
securityManager .setSessionManager (sessionManager ());
return securityManager ;
}
Realm:Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”,也就是说,当与用户帐户这类安全相关数据进行交互,执行认证(登录)和授权(访问控制)时,Shiro会从应用配置的Realm中查找很多内容。
Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
Realm有两个关键方法doGetAuthenticationInfo(AuthenticationToken authenticationToken)执行认证逻辑;doGetAuthorizationInfo(PrincipalCollection principalCollection)执行授权逻辑。
@ Override
protected AuthorizationInfo doGetAuthorizationInfo (PrincipalCollection principalCollection ) {
//赋予角色和权限
}
@ Override
protected AuthenticationInfo doGetAuthenticationInfo (AuthenticationToken authenticationToken )
throws AuthenticationException {
//用户认证
}
Filter链:Shiro通过其创新的URL过滤器链功能支持安全特定的过滤规则,它允许你为任何匹配的URL模式指定非正式的过滤器链。
filterChainDefinitionManager .put ("/userInfo" ,"authc" ); //需要登录
filterChainDefinitionManager .put ("/jobs/**" ,"perms[JOB:CREATE]" ); //需要[JOB:CREATE]权限
filterChainDefinitionManager .put ("/admin/**" ,"roles[Admin]" ); //需要Admin角色
相关资料
Reactions are currently unavailable
You can’t perform that action at this time.
Shiro
Shiro的几个关键概念
Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
Realm有两个关键方法doGetAuthenticationInfo(AuthenticationToken authenticationToken)执行认证逻辑;doGetAuthorizationInfo(PrincipalCollection principalCollection)执行授权逻辑。
相关资料