文章目录
-
-
- 1. 核心功能
- 2. 核心组件
- 3. 主要特点
- 4. 相关试题
-
- 1. Shiro 框架是什么?
- 2. Shiro 的优点有哪些?
- 3. Shiro 的核心组件有哪些?
- 4. Shiro 认证执行流程是什么?
- 5. Shiro 授权执行流程是什么?
- 6. Shiro 注解有哪些?
- 7. 什么是对称式加密?常用算法有哪些?
- 8. 什么是非对称加密?常用算法有哪些?
- 9. 什么是不可逆加密?常用算法有哪些?
- 10. 什么是加盐加密?
- 11. Spring 如何配置 Shiro?
- 12. 比较 Spring Security 和 Shiro?
- 13. 什么是资源实例的控制称为细粒度权限管理?
- 14. 如何授权粗粒和细粒?
- 15. Shiro 的过滤器有哪些?分别有什么作用?
- 16. 如何在 Spring Boot 中使用 Shiro 实现记住我功能?
- 17. Shiro 如何实现单点登录?
- 18. Shiro 中的 PrincipalCollection 和 CredentialsCollection 有什么区别?
- 19. 如何在 Shiro 中创建一个自定义的 Realm?
- 20. Shiro 如何处理会话超时?
- 21. Shiro 中的 SessionDAO 有什么作用?
- 22. 请解释 Shiro 中的缓存机制。
- 23. 如何在 Shiro 中实现验证码校验?
- 24. Shiro 中的 AuthenticatingRealm 和 AuthorizingRealm 有什么区别?
- 25. Shiro 如何集成第三方身份提供者?
- 26. Shiro 中的 PermissionResolver 有什么作用?
- 27. 如何在 Shiro 中实现动态权限加载?
- 28. Shiro 中的 AOP 权限检查是如何实现的?
- 5. 相关代码
-
1. 核心功能
- 身份验证:验证用户身份,常见方式有用户名密码登录、二维码登录、手机短信登录、脸部识别认证、指纹认证等。
- 授权:根据用户权限控制对资源的访问,如判断用户是否具有某个操作的使用权限。
- 会话管理:管理特定于用户的会话,包括创建和销毁会话,以及处理会话超时等。
- 加密:对数据源使用加密算法加密,保证数据的安全性。
2. 核心组件
- Subject:代表 “当前操作用户”,可以是人、第三方进程、后台账户等与软件交互的对象,其代表了当前用户的安全操作。
- SecurityManager:是 Shiro 框架的核心,负责管理所有用户的安全操作,通过它来提供安全管理的各种服务。
- Realm:充当 Shiro 与应用安全数据间的 “桥梁” 或 “连接器”,当执行认证和授权验证时,从配置的 Realm 中查找用户及其权限信息。
3. 主要特点
- 易于使用:提供了易于理解的 API,可以快速、轻松地集成到任何应用程序中。
- 全面性:涵盖了身份验证、授权、加密和会话管理等功能,可作为一站式的安全解决方案。
- 灵活性:可以在任何应用程序环境中工作,不依赖特定的框架或容器。
- Web 支持:拥有令人兴奋的 Web 应用程序支持,允许基于应用程序的 URL 创建灵活的安全策略和网络协议,并提供 JSP 库控制页面输出。
- 低耦合:干净的 API 和设计模式使其容易与许多其他框架和应用程序集成。
- 被广泛支持:是 Apache 软件基金会的一部分,有友好的开发和用户群体提供帮助。
Shiro 作为一个强大的 Java 安全框架,不仅提供了全面的身份验证、授权、加密和会话管理功能,还具备易于使用、灵活性强、支持多种环境等特点,适用于各种规模的 Java 应用程序。
4. 相关试题
1. Shiro 框架是什么?
- 答案:Shiro 是一个强大且易用的 Java 安全框架,用于处理认证、授权、会话管理以及密码加密等功能。
2. Shiro 的优点有哪些?
- 答案:简单的身份验证,支持多种数据源;细粒度的授权;支持一级缓存提升性能;基于 POJO 的企业会话管理;简单的 API 加密;不与任何框架绑定,可独立运行。
3. Shiro 的核心组件有哪些?
- 答案:Subject、SecurityManager、Realm。
4. Shiro 认证执行流程是什么?
- 答案:通过配置文件创建 SecurityManager;调用 subject.login 方法提交认证;SecurityManager 进行认证,最终由 ModularRealmAuthenticator 进行认证;从 Realm 获取用户信息并进行比对;返回认证结果。
5. Shiro 授权执行流程是什么?
- 答案:对 subject 进行授权,调用 isPermitted 等方法;SecurityManager 执行授权,通过 ModularRealmAuthorizer 执行授权;从自定义的 Realm 中查询权限数据并返回结果[。
6. Shiro 注解有哪些?
- 答案:@RequiresAuthentication、@RequiresUser、@RequiresGuest、@RequiresRoles、@RequiresPermissions。
7. 什么是对称式加密?常用算法有哪些?
- 答案:对称加密使用同一个密钥进行加密和解密,常用算法有 DES、AES。
8. 什么是非对称加密?常用算法有哪些?
- 答案:非对称加密使用公钥和私钥,常用算法有 RSA、SHS。
9. 什么是不可逆加密?常用算法有哪些?
- 答案:不可逆加密无法解密,常用算法有 MD5、SHA256、SHA512。
10. 什么是加盐加密?
- 答案:将口令和一个随机数相关联进行加密,提高安全性。
11. Spring 如何配置 Shiro?
- 答案:在 web.xml 中配置 Shiro 的 Filter;在 Spring 配置文件中配置自定义 Realm、缓存策略、SecurityManager 等。
12. 比较 Spring Security 和 Shiro?
- 答案:Spring Security 功能强大但复杂,需依赖 Spring 环境;Shiro 简单灵活,可独立运行,适用于各种应用。
13. 什么是资源实例的控制称为细粒度权限管理?
- 答案:控制到数据级别的权限,如用户只允许修改本部门的员工信息。
14. 如何授权粗粒和细粒?
- 答案:粗粒度可通过过滤器拦截 URL;细粒度可在业务层面进行个性化开发,如在 service 接口中添加验证。
15. Shiro 的过滤器有哪些?分别有什么作用?
- 答案:authc(证后访问)、anon(匿名访问)、logout(退出登录)。
16. 如何在 Spring Boot 中使用 Shiro 实现记住我功能?
- 答案:在配置文件中启用 rememberMe 功能,并在登录时设置 RememberMeCookie。
17. Shiro 如何实现单点登录?
- 答案:配置多个应用共享相同的 SecurityManager 和 Realm,用户在一个应用中登录后,在其他应用中也可免密访问。
18. Shiro 中的 PrincipalCollection 和 CredentialsCollection 有什么区别?
- 答案:PrincipalCollection 存储主体的身份信息,CredentialsCollection 存储主体的凭证信息。
19. 如何在 Shiro 中创建一个自定义的 Realm?
- 答案:继承 AuthorizingRealm 类,并实现 doGetAuthenticationInfo 和 doGetAuthorizationInfo 方法。
20. Shiro 如何处理会话超时?
- 答案:可以在配置文件中设置会话超时时间,也可以在代码中手动使会话失效。
21. Shiro 中的 SessionDAO 有什么作用?
- 答案:用于会话的持久化操作,如保存、读取、删除会话。
22. 请解释 Shiro 中的缓存机制。
- 答案:Shiro 提供了缓存机制来存储常用的认证和授权信息,以提高性能。
23. 如何在 Shiro 中实现验证码校验?
- 答案:在登录表单中添加验证码输入框,并在后端验证用户输入的验证码是否正确。
24. Shiro 中的 AuthenticatingRealm 和 AuthorizingRealm 有什么区别?
- 答案:AuthenticatingRealm 只处理认证逻辑,AuthorizingRealm 同时处理认证和授权逻辑。
25. Shiro 如何集成第三方身份提供者?
- 答案:可以通过实现自定义的认证和授权逻辑,与第三方身份提供者进行集成。
26. Shiro 中的 PermissionResolver 有什么作用?
- 答案:用于将字符串格式的权限串解析为具体的权限对象。
27. 如何在 Shiro 中实现动态权限加载?
- 答案:可以实现自定义的 Realm,并在需要时动态加载权限数据。
28. Shiro 中的 AOP 权限检查是如何实现的?
- 答案:通过在方法上添加注解,Shiro 会在方法执行前自动进行权限检查。
5. 相关代码
1. 添加依赖
首先,在你的 Maven 项目中添加 Shiro 的依赖:
<dependency>
<groupId>org.apache.shiro</groupId


685

被折叠的 条评论
为什么被折叠?



