首页 课程 师资 教程 报名

快问快答之shiro框架面试题

  • 2023-02-07 15:32:45
  • 749次 动力节点

1.Apache Shiro的三大核心组件:

  • Subject:当前用户的操作(所有的Subject实例都被绑定到一个SecurityManager上)
  • SecurityManager:用于管理所有的Subject(Shiro架构的心脏,用来协调内部各安全组件,管理内部组件实例,并通过它来提供安全管理的各种服务)
  • Realms:用于进行权限信息的验证(本质上是一个特定的DAO,必须指定至少一个Realm用来进行身份验证和授权 )

Authentication和Authorization:

在Shiro的用户权限认证过程中其通过两个方法来实现:

  • Authentication:是验证用户身份的过程
  • Authorization:是授权访问控制,用于对用户进行的操作进行认证授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。

其他组件:

除了上述几个组件外:Shiro还有几个组件:

  • SessionManager:Shiro为任何应用提供了一个会话编程范式。
  • CacheManager:对Shiro的其他组件提供缓存支持。

2.Shiro的优点:

  1. 简单你的身份认证,支持多种数据源
  2. 非常简单的加密API
  3. 对角色的简单的授权,支持细粒度的授权(方法级)
  4. 支持一级缓存,以提升应用程序的性能
  5. 内置的基于POJO企业会话管理,适用于Web以及非Web的环境
  6. 不跟任何的框架或者容器捆绑,可以独立运行

3.比较Spring Security和Apache Shiro:

  • 相比Spring Security,Shiro在保持强大功能的同时,使用简单性和灵活性
  • Spring Security:即便是一个一个简单的请求,最少得经过它的8个Filter
  • Spring Security必须在Spring的环境下使用
  • 初学Spring Security,曲线还是较大,需要深入学习其源码呵呵框架,配置起来也较费力

4.Shiro如何自实现认证:

Shiro的认证过程由Realm执行,SecurityManager会调用Realm包下的getAuthenticationInfo(AuthenticationToken token)方法。

实际开发中,通常提供org.apache.shiro.realm.AuthenticatingRealm 的实现类,并在该实现类中提供doGetAuthenticationInfo(AuthenticationToken token)方法的具体实现。

5.Shiro如何实现自实现授权:

实际开发中,通常提供org.apache.shiro.realm.AuthenticatingRealm 的实现类,并提供doGetAuthorizationInfo(PrincipalCollection principals)方法的具体实现。

配置ShiroConfig

创建一个方法并给注解@Bean将其交给Spring进行管理,返回类型为ShiroFilterFactoryBean类型 参数为SecurityManager securityManager

在方法中new ShiroFilterFactoryBean(),运用setSecurityManager()把securityManager传进去进行设置

运用setLoginUrl让用户在访问某个接口需要登录时跳转页面,运用setUnauthorizedUrl让用户登录后没有权限时跳转页面

new LinkedHashMap<>();把相关路径所需的权限进行设置,之后把其交给setFilterChainDefinitionMap()中。

创建一个方法并给注解@Bean将其交给Spring进行管理,返回类型为SecurityManager类型的securityManager()方法,new DefaultWebSecurityManager();

因其securityManager可以管理各种组件,所以可以绑定各种自定义的组件,设置绑定realm推荐放到最后,不然某些情况下不生效。

6.Shiro有哪些组件:

Authentication:身份认证/登录,验证用户是不是拥有相应的身份。

Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限

Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;

Crypotgraphy:加密,保护数据的安全行,如密码加密存储到数据库,而不是明文存储;

Web Support:Web支持,可以非常容易的集成到Web环境。

Remember me:记住我,这是一个非常常见的功能,即一次登录后,下次再来的话不用登录了。

以上就是“快问快答之shiro框架面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注动力节点Java官网。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交