-
源码位置:https://gitee.com/ljl17625/shiro-spring/tree/master
查看全部 -
JdbcRealm 有默认的查询语句
查看全部 -
shiro授权
查看全部 -
Shiro认证流程:
1:创建SecurityManager;
2: 主体提交认证 ;
3:SecurityManager认证;
4:SecurityManager是用Authenticator来认证;
5:authenticator认证是通过Realm获取认证数据做最终的认证
查看全部 -
Shiro认证
查看全部 -
Shiro也是通过Security Manager提供安全服务
Authenticator 认证器 管理登入登出
Authorizer 授权器 赋予主体有哪些权限
Session Manager Shiro自己实现的session管理
Session Dao 对Session进行增删改查
Cache Manager 缓存管理 可以缓存角色数据、权限数据
Realms shiro与数据库的桥梁,
主体提交认证信息到SecurityManager,SecurityManager调用Authenticator去做认证,Authenticator获取认证信息是通过realms访问数据库,让客户提交信息与realms提供的信息做匹配。
同样的 Authorizer也是通过调用realms获取权限的。
cryptography 安全加密
查看全部 -
spring整合shiro
1.创建项目
2.导入依赖(spring、shiro、springmvc、spring-shiro、shiro-web)
3.创建web.xml(配置前端控制器、过滤器、加载初始化springmvc.xml、加载spring.xml、post请求乱码)
4.创建springmvc.xml(配置上下文扫描,配置mvc的处理器适配器、处理器适配器,配置静态文件扫描)
5.创建spring.xml(加到容器中:shiroFilter,创建SecurityMananger对象并设置自定义Realm,定义自定义的Realm,设置加密的算法)
6.创建login.html (表单账号、密码提交到UserController)
7.自定义Realm
8.创建UserController(接受前台数据,进行shiro登录验证,如果成功返回成功,打印错误)
查看全部 -
自定义IniRealm
在src/main/resources中创建user.ini
内容为:
[users]
Mark1=123,admin admin是role
[roles]
admin=user:delete 拥有删除用户的权限
public class IniRealmTest {
//Realm:领域,范围
@Test
public void testAuthentication() {
//路径
IniRealm realm=new IniRealm("classpath:user.ini");
//获取安全管理者对象------DefaultSecurityManager默认管理者
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
//设置管理者的管理领域
defaultSecurityManager.setRealm(realm);
//SecurityUtils操作securityManager的工具类,提供了getSecurityManager和setSecurityManger,getSubject的方法
//此处是给工具类默认管理者对象
SecurityUtils.setSecurityManager(defaultSecurityManager);
//获取Subject对象,可以进行login 登陆 和logout 登出方法
Subject subject = SecurityUtils.getSubject();
//用户+密码的token令牌
UsernamePasswordToken token = new UsernamePasswordToken("Mark1", "123");
//登入
subject.login(token);
//如果token中的密码和用户名,在上面的用户中,那么会返回true,反之则是false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
//登出
subject.logout();
//因为登出了,会返回false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
}
}
查看全部 -
简单的shiro的Demo
Pom.xml中需要依赖
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
public class AuthenticationTest {
//Realm其中最简单的一种
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before//一定要写这个Before,不然找不到对应的用户
//添加用户
public void addUser() {
simpleAccountRealm.addAccount("Mark", "123456");
simpleAccountRealm.addAccount("Mark1", "123456");
}
//Realm:领域,范围
@Test
public void testAuthentication() {
//获取安全管理者对象------DefaultSecurityManager默认管理者
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
//设置管理者的管理领域
defaultSecurityManager.setRealm(simpleAccountRealm);
//SecurityUtils操作securityManager的工具类,提供了getSecurityManager和setSecurityManger,getSubject的方法
//此处是给工具类默认管理者对象
SecurityUtils.setSecurityManager(defaultSecurityManager);
//获取Subject对象,可以进行login 登陆 和logout 登出方法
Subject subject = SecurityUtils.getSubject();
//用户+密码的token
UsernamePasswordToken token = new UsernamePasswordToken("Mark1", "123456");
//登入
subject.login(token);
//如果token中的密码和用户名,在上面的用户中,那么会返回true,反之则是false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
//登出
subject.logout();
//因为登出了,会返回false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
}
}
查看全部 -
Shiro认证的主要步骤
创建SecurityManager
主体提交认证
SecurityManager认证
Authenticator认证
Realm验证
查看全部 -
Shiro 授权:
创建SecurityManager -> 主体授权 -> SecurityManager授权 -> Authorizer授权 -> Realm获取角色权限数据
查看全部 -
Shiro认证过程:
创建SecurityManager -> 主题提交认证 -> SecurityManager认证 -> Authenticator认证 -> Realm验证
查看全部 -
Shiro整体架构
查看全部 -
可以完成项目里的权限查看全部
-
shiro认证流程
创建SecurityManager-->主体提交认证-->SecurityManager认证-->Authenticator认证-->Realm验证(连接数据库的桥梁)
查看全部
举报