shiro
Apache Shiro是一个强大且易用的Java安全框架,轻量级、简单易上手,功能强大
Spring security:重量级安全框架,复杂不易上手,功能更强,两者控制权限的粒度不同四大基石:身份验证(Authentication)、授权(Authorization)、密码学(Cryptography)、会话管理(SessionManagement)RBAC(Role-BaseAccessController):基于角色的访问控制,用户通过角色与权限进行关联
步骤一:导包
<!--shiro的核心包-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
<!--日志包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
也可以导入shiro-all包,既可以所有关于shiro的包都可以使用
步骤二:配置shiro.ini文件
# -----------------------------------------------------------------------------
# 这个文件中就是咱们的:用户,角色,权限,资源等
# users:代表下面的都是用户
# root:用户名 123456:密码 admin:角色
# -----------------------------------------------------------------------------
[users]
root = 123456, admin
guest = guest, guest
gu = 123456, it
# -----------------------------------------------------------------------------
# roles:角色
# admin = * admin角色可以做任何事
# guest = employee:* guert角色可以做员工可以做的任何事
# it = employee:save :it部可以添加员工
# -----------------------------------------------------------------------------
[roles]
admin = *
guest = employee:*
it = employee:save
步骤三:测试
//获取权限工厂
IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//获取权限管理器,所有功能都在权限管理器中
SecurityManager manager = factory.createInstance();
//将权限管理器交给工具管理类,工具类可以直接实现它相应的功能
SecurityUtils.setSecurityManager(manager);
//获取当前用户
Subject subject = SecurityUtils.getSubject();
//判断用户是否登录
System.out.println("登录:"+subject.isAuthenticated());
//如果没有登录,就让它登录
if(!subject.isAuthenticated()){
//获取令牌
UsernamePasswordToken token = new UsernamePasswordToken("root", "123456");
//登录
subject.login(token);
}
System.out.println("登录:"+subject.isAuthenticated());