Shiro 授权(Authorization)总结

[复制链接]
发表于 2026-1-6 09:35:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Shiro 是一个强大的 Java 安全框架,此中授权(Authorization)是其紧张的功能之一,用于控制用户对应用步伐资源的访问权限。
一、授权的根本概念
授权是在用户认证通事后,确定用户是否有权访问特定的资源或实验特定的利用。在 Shiro 中,授权紧张通过脚色和权限来实现。

  •         脚色(Role):表现一组干系的权限聚集。比方,“管理员”脚色大概具有对体系举行管理的一系列权限,如添加用户、删除用户、修改用户信息等。脚色可以资助我们对用户举行分类管理,使得授权更加清晰和易于明白。
  •         权限(Permission):具体的利用允许,如“查察用户列表”、“编辑用户信息”、“删除文档”等。权限通常以一种特定的格式表现,比如“资源:利用”,如许可以更准确地控制用户对差异资源的差异利用权限。
二、Shiro 授权的实现方

  •         利用注解举行授权

    • 在方法上添加@RequiresRoles、@RequiresPermissions等注解来指定访问该方法所需的脚色或权限。
    1. import org.apache.shiro.authz.annotation.RequiresRoles;
    2. import org.apache.shiro.authz.annotation.RequiresPermissions;
    3. public class SomeService {
    4.     @RequiresRoles("admin")
    5.     public void adminMethod() {
    6.         // 只有具有 "admin" 角色的用户才能访问此方法
    7.     }
    8.     @RequiresPermissions("user:view")
    9.     public void viewUserMethod() {
    10.         // 只有具有 "user:view" 权限的用户才能访问此方法
    11.     }
    12. }
    复制代码

  •         在代码中举行授权判断

    • 通过Subject对象的hasRole、hasPermission等方法举行授权判断。       
      1. import org.apache.shiro.SecurityUtils;
      2. import org.apache.shiro.subject.Subject;
      3. public class AnotherService {
      4.     public void someMethod() {
      5.         Subject subject = SecurityUtils.getSubject();
      6.         if (subject.hasRole("user")) {
      7.             // 用户具有 "user" 角色时执行的操作
      8.         }
      9.         if (subject.hasPermission("document:read")) {
      10.             // 用户具有 "document:read" 权限时执行的操作
      11.         }
      12.     }
      13. }
      复制代码

  • 在代码中举行授权判断
            1.通过Subject对象的hasRole、hasPermission等方法举行授权判断。
    1. [users]
    2. admin = password1,adminRole
    3. user = password2,userRole
    4. [roles]
    5. adminRole = *
    6. userRole = user:view,document:read
    7. [urls]
    8. /admin/* = roles[admin]
    9. /user/* = roles[user]
    复制代码
 这里界说了两个用户“admin”和“user”,分别具有差异的脚色。同时,为差异的脚色分配了差异的权限,并在 URL 设置中指定了差异的路径须要差异的脚色才气访问。
三、授权流程

  • 用户举行认证,认证通事后获取Subject对象。
  • 在须要举行授权判断的地方,利用注解或代码中的授权判断方法,大概根据设置文件中的规则举行授权判断。
  • Shiro 根据用户的脚色和权限信息,决定用户是否有权访问特定的资源或实验特定的利用。假如用户具有所需的脚色或权限,则答应访问;否则,抛出相应的非常或拒绝访问。
四、授权的上风和应用场景

  •         上风

    • 机动性:可以根据差异的业务需求,机动地界说脚色和权限,实现细粒度的访问控制。
    • 可维护性:通过会合管理脚色和权限,使得授权规则的修改和维护更加方便。
    • 安全性:有用地防止未经授权的访问,掩护应用步伐的资源安全。

  •         应用场景

    • 企业级应用:对于企业内部的管理体系,差异的用户脚色大概具有差异的利用权限,如管理员可以举行体系设置和用户管理,平常员工只能查察和编辑本身的工作使命。
    • 电子商务平台:商家和斲丧者具有差异的权限,商家可以管理商品信息和订单,斲丧者可以欣赏商品和下单购买。
    • 外交网络平台:差异的用户脚色大概具有差异的访问权限,如平常用户可以查察公开内容,会员用户可以查察更多的专属内容。

总之,Shiro 的授权功能为 Java 应用步伐提供了强大而机动的访问控制机制,可以有用地掩护应用步伐的资源安全。通过公道地界说脚色和权限,并团结差异的授权实现方式,可以满意各种复杂的业务需求。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表