博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shiro学习
阅读量:4963 次
发布时间:2019-06-12

本文共 1806 字,大约阅读时间需要 6 分钟。

Authenticator : 认证器,管理登入、登出

Authorizer : 授权器,管理主体有哪些权限

Session Manager : session管理器

Session DAO : session的增删改查

Cache Manager : 缓存管理器

Realms : shiro与数据源之间的桥梁,获取认证信息、权限数据、角色数据都是通过realms获取的

 

1、Shiro认证

创建SecurityManager->主体提交认证请求->SecurityManager认证->Authenticator认证->Realms验证

SimpleAccountRealm

DefaultSecurityManager

SecurityUtils

UsernamePasswordToken

用户名不正确:找不到用户名异常

密码不正确:不正确的凭证异常

subject.login(token);

subject.isAuthenticated();

2、Shiro授权

创建SecurityManager->主题授权->SecurityManager授权->Authorizer授权->Realm获取角色权限数据

subject.checkRoles("admin","user1");

3、Realm

内置Realm:IniRealm JdbcRealm

IniRealm iniRealm = new IniRealm("classpath:user.ini");

subject.checkPermission("user:delete");

user.ini文件内容如下:

[Users]

Mark=123456,admin

[roles]

admin=user:delete,user:update

 

DruidDataSource druidDataSource = new DruidDataSource();

druidDataSource.setUrl("jdbc:mysql://localhost:3306/test");

druidDataSource.setUsername("root");

druidDataSource.setPassword("root");

JdbcRealm jdbcRealm = new JdbcRealm();

jdbcRealm.setDataSource(dataSource);

jdbcRealm.setPermissionsLookupEnabled(true);

select password from users where username = ?

select passwork,password_salt from users where username = ?

select role_name from user_roles where username = ?

select permission from roles_permissions where role_name = ?

users表:id,username,password

user_roes表:id,Mark,admin

roles_permissions表:id,role_name,permission

 

JdbcRealm

String sql = "select password from test_user where user_name = ?";

jdbcRealm.setAuthenticationQuery(sql);

String roleSql = "select role_name from test_user_role where user_name = ?";

jdbcRealm.setUserRolesQuery(roleSql);

 

自定义授权,新增CustomRealm类,需要继承AuthorizingRealm抽象类,实现它的抽象方法(这里用集合模拟从数据库/缓存中获取数据)

SimpleAuthorizationInfo:授权信息

SimpleAuthenticationInfo:认证信息

转载于:https://www.cnblogs.com/sunflower627/p/9359570.html

你可能感兴趣的文章
linux中configure文件默认执行结果所在位置
查看>>
Windows向Linux上传文件夹
查看>>
20180104-高级特性-Slice
查看>>
6个SQL Server 2005性能优化工具介绍
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
组件:slot插槽
查看>>
走进C++程序世界------异常处理
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
利用sed把一行的文本文件改成每句一行
查看>>