博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017.2.7 开涛shiro教程-第六章-Realm及相关对象(三)
阅读量:4456 次
发布时间:2019-06-08

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

原博客地址:

根据下载的pdf学习。

 

第六章 Realm及相关对象(三)

1.准备3个Realm

MyRealm1,MyRealm2,MyRealm3。

(1)MyRealm1

public class MyRealm1 implements Realm {    @Override    public String getName() {        return "a"; //realm name 为 “a”    }    @Override    public boolean supports(AuthenticationToken token) {        return token instanceof UsernamePasswordToken;    }    @Override    public AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {        return new SimpleAuthenticationInfo(                "zhang", //身份 字符串类型                "123",   //凭据                getName() //Realm Name        );    }}

 

(2)MyRealm2

和Realm1的代码一样,只是getName返回的是“b”。

 

(3)MyRealm3

MyRealm3的名字是c,并且返回的信息中,参看代码第17行,是User类型的身份

1 public class MyRealm3 implements Realm { 2  3     @Override 4     public String getName() { 5         return "c"; //realm name 为 “c” 6     } 7  8     @Override 9     public boolean supports(AuthenticationToken token) {10         return token instanceof UsernamePasswordToken;11     }12 13     @Override14     public AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {15         User user = new User("zhang", "123");16         return new SimpleAuthenticationInfo(17                 user, //身份 User类型18                 "123",   //凭据19                 getName() //Realm Name20         );21     }22 }

 

2.ini配置

 

3.测试用例

1 public class PrincialCollectionTest extends BaseTest { 2  3     @Test 4     public void test() { 5  6         //每个Realm都身份验证成功了 7         login("classpath:shiro-multirealm.ini", "zhang", "123"); 8         Subject subject = subject(); 9         //获取Primary Principal(即第一个)10         Object primaryPrincipal1 = subject.getPrincipal();11         PrincipalCollection princialCollection = subject.getPrincipals();12         Object primaryPrincipal2 = princialCollection.getPrimaryPrincipal();13 14         //但是因为多个Realm都返回了Principal,所以此处到底是哪个是不确定的15         Assert.assertEquals(primaryPrincipal1, primaryPrincipal2);16 17 18         //返回 a b c19         Set
realmNames = princialCollection.getRealmNames();20 System.out.println(realmNames);21 22 //因为MyRealm1和MyRealm2返回的凭据都是zhang,所以排重了23 Set
principals = princialCollection.asSet(); //asList和asSet的结果一样24 System.out.println(principals);25 26 //根据Realm名字获取,由于多个Realm可以重名,所以使用时可能返回多个身份。防止这种情况,就是尽量不要重名。27 Collection
users = princialCollection.fromRealm("c");28 System.out.println(users);29 }30 }

 

转载于:https://www.cnblogs.com/lyh421/p/6378764.html

你可能感兴趣的文章
zabbix时间不同步
查看>>
Yii2.0官方高级模板的目录结构分析
查看>>
SpringMVC框架下实现JSON(类方法中回传数据到jsp页面,使用jQuery方法回传)
查看>>
Javascript回顾
查看>>
Linux下Zabbix的安装
查看>>
HTTP协议
查看>>
poj 1328
查看>>
luogu P2634 [国家集训队]聪聪可可 点分治
查看>>
远程桌面,身份验证错误:要求的函数不正确等解决办法
查看>>
图片背景d:\myjava
查看>>
连接数据库,和数据增删改
查看>>
crystl32.ocx failed
查看>>
今天在debian下安装了thunderbird [转]
查看>>
js、html中的单引号、双引号及其转义使用
查看>>
OC语言---封装,继承,多态
查看>>
python 单元测试
查看>>
异常和状态管理
查看>>
hive on spark
查看>>
jmeter XLSX 读取
查看>>
一条SQL查询访问记录表(visit_log)中某个类目(catalog_id)的访问量(visit)排前两名的记录行...
查看>>