2)角色
3)权限
不同的用户登录系统后,拥有不同的角色,不同的角色可以对系统资源执行不同的操作。
用户和角色是多对多关系,角色和权限是多对多关系。
=====================================================================
Apache的Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
主要API
-
SecurityManager 安全管理器,完成核心业务
-
Subject 提供方法给开发者调用
-
Realm 提供用户登录和授权的数据
-
SecurityUtils 工具类,用于整合其他的组件
=====================================================================
1、 添加依赖
org.apache.shiro
shiro-all
1.4.0
2、在resources下添加shiro.ini文件,内容如下
[users]
zhang=123,role1,role2
wang=123,role2
[roles]
role1=user:create,user:update
role2=user:create,user:delete
role3=user:create
shiro.ini是Shiro的配置文件,[users]是用户配置,格式是:账号=密码,角色1,角色2…
[roles]是权限配置,格式是:角色=权限1,权限2…
3、测试
//创建基于Ini文件的安全管理器工厂
IniSecurityManagerFactory factory = new IniSecurityManagerFactory(“classpath:shiro.ini”);
//获得安全管理器
SecurityManager instance = factory.getInstance();
//配置安全管理器
SecurityUtils.setSecurityManager(instance);
//获得Subject对象
Subject subject = SecurityUtils.getSubject();
//创建账号密码token
UsernamePasswordToken user = new UsernamePasswordToken(“wang”, “123”);
//登录验证
subject.login(user);
//权限判断
System.out.println(“是否登录成功:” + subject.isAuthenticated());
System.out.println(“是否拥有role1角色:” + subject.hasRole(“role1”));
System.out.println(“是否拥有delete权限:” + subject.isPermitted(“user:delete”));
使用wang登录的效果:
使用zhang登录的效果: