金沙巴黎人娱乐城而且在好多方面具有更好的易用性和彭胀性-2024年金沙巴黎人娱乐城(中国大陆)官方网站-登录入口
发布日期:2026-01-04 11:33 点击次数:103
大家好,我是 V 哥。Apache Shiro 是一个高大且机动的 Java 安全框架,专注于提供认证、授权、会话措置和加密功能。它常用于保护 Java 诈欺的探问范围,罕见是在 Web 诈欺中。比拟于 Spring Security,Shiro 的盘算推算更简易,合适轻量级诈欺,而且在好多方面具有更好的易用性和彭胀性,今天 V 哥就来聊聊 Shiro 安全框架。Shiro 的中枢见识按照老例,和 V 哥沿途来了解一下 Shiro 的中枢见识:SubjectSubject 是 Shiro 框架中一个中枢的接口,暗示诈欺中的“用户”或“实体”,用于交互和存储认证景况。频繁通过 SecurityUtils.getSubject() 得到现时的 Subject。它代表了用户的身份信息和权限数据。SecurityManagerSecurityManager 是 Shiro 的中枢范围器金沙巴黎人娱乐城,崇拜措置总共的安全操作和认证。通过设立 SecurityManager金沙巴黎人娱乐城,不错范围用户的认证、授权、会话等措置。RealmRealm 是 Shiro 从数据源得到用户、扮装和权限信息的路线。通过好意思满自界说的 Realm,不错将 Shiro 与数据库、LDAP、文献等数据源整合。Shiro 会把用户的认证和授权数据从 Realm 中得到。SessionShiro 自带会话措置,不依赖于 Servlet 容器提供的会话。即使在非 Web 环境下,也不错使用 Shiro 的会话措置。Shiro 的会话措置提供了更良好的范围,比如会话超时、存储和分享等功能。Authentication(认证)认证是指考证用户身份的流程。Shiro 提供了浮浅的 API 来好意思满认证流程,比如 subject.login(token)。在本色诈欺中,频繁通过用户名和密码的组合进行认证,但 Shiro 也相沿其他方式(如 OAuth2、JWT 等)。Authorization(授权)授权是指考证用户是否具备某些权限或扮装的流程。Shiro 相沿基于扮装和基于权限的授权,允许更精细的权限范围。通过 subject.hasRole 或 subject.isPermitted 举止,树立者不错检查用户的扮装和权限。Cryptography(加密)Shiro 内置了加密功能,提供对密码和明锐信息的加密妥协密相沿。它相沿多种加密算法,而且在密码存储时相沿散列和盐值。Shiro 的主邀功能和上风V 哥追忆几点Shiro 的主邀功能和上风,这个在口试时吹给力用得到。易于集成Shiro 的 API 盘算推算浮浅,易于集成到多样 Java 诈欺中。树立者不错基于 Shiro 提供的默许好意思满快速搭建一个基本的安全架构,也不错凭据需要自界说多样功能。独处的会话措置与基于 Web 容器的会话措置不同,Shiro 提供了跨环境的会话措置,不错诈欺于 Web 和非 Web 的环境,增多了诈欺的机动性。权限范围浮浅而机动Shiro 的权限措置不错通过设立文献、注解或代码好意思满,提供了细粒度的探问范围。通过权限和扮装的组合,树立者不错致极机动地范围探问权限。相沿多种数据源Shiro 不错从多种数据源(如数据库、LDAP、文献等)得到用户和权限信息,便捷与多样现存系统整合。相沿 Web 和非 Web 环境Shiro 不仅不错在 Web 诈欺中使用,也相沿在桌面诈欺或微工作等环境中使用。Shiro 的基本使用示例光讲见识不是 V 哥作风,接下来,通过一个典型的 Shiro 诈欺来了解一下如何使用,包含设立 SecurityManager、设立 Realm、进行认证和授权等形势。设立 Shiro 环境不错通过 shiro.ini 文献设立 Shiro,也不错通过代码进行设立。 [main] # 设立 SecurityManager securityManager = org.apache.shiro.mgt.DefaultSecurityManager # 设立 Realm myRealm = com.wg.MyCustomRealm securityManager.realms = $myRealm创建自界说 Realm自界说 Realm 通过剿袭 AuthorizingRealm 并好意思满 doGetAuthenticationInfo 和 doGetAuthorizationInfo 举止来提供用户和权限数据。publicclassMyCustomRealmextendsAuthorizingRealm{@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)throws AuthenticationException {// 得到用户名和密码等信息,查询数据库进行认证returnnew SimpleAuthenticationInfo(username, password, getName()); }@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals){// 得到用户扮装和权限信息 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); info.addRole("admin"); info.addStringPermission("user:read");return info; } }使用 Shiro 进行认证和授权 Subject currentUser = SecurityUtils.getSubject();if (!currentUser.isAuthenticated()) { UsernamePasswordToken token = new UsernamePasswordToken("username", "password");try { currentUser.login(token); System.out.println("认证到手"); } catch (AuthenticationException ae) { System.out.println("认证失败"); } }// 检查权限if (currentUser.hasRole("admin")) {//用输出模拟一下哈 System.out.println("用户领有 admin 扮装"); }if (currentUser.isPermitted("user:read")) {//用输出模拟一下哈 System.out.println("用户具有 user:read 权限"); }通过这个浮浅的案例学习,我们不错了解 Shiro 的基本使用,但这不是全部,听V哥链接逐步谈来。场景案例这点很伏击,强调一下哈,Shiro 合适需要简易易用、安全范围条目机动的 Java 诈欺,如中袖珍 Web 诈欺、桌面诈欺、散布式微工作等。关于大型企业诈欺或需要集成多种认证方式(如 OAuth2、JWT 等)的方法,Spring Security 可能会更合适。要在微工作架构中好意思满基于 Apache Shiro 的安全认证和授权,比如一个订单措置系统为例。这个系统包含两个主要工作:用户工作:崇拜用户的注册、登录、认证等操作。订单工作:允许用户创建、稽查、删除订单,并拆伙探问权限。我们来看一下,这个应该若何盘算推算呢?微工作案例盘算推算在这个场景中,我们需要以下几项中枢功能:用户认证:用户通过用户名和密码登录。权限范围:仅措置员能删除订单,粗鄙用户只可稽查和创建订单。Token机制:使用 JWT Token(JSON Web Token)来措置用户的登录景况,好意思满无景况认证,使得在散布式环境下不依赖于单一会话。跨工作认证:订单工作在接管到肯求时,检查并考证用户的身份和权限。架构和本事选型Spring Boot:用于快速搭建微工作。Shiro:好意思满认证、授权。JWT:生成和考证 Token,保抓无景况认证。Spring Data JPA:探问数据库存储用户和订单数据。系统结构+------------------+ +---------------------+| 用户工作 | | 订单工作
