我阅读了Hyperledger Fabric会员服务提供商(MSP)上的文档,但并非所有内容都非常清楚.
关于MSP文档部分的链接是这样的:https: //hyperledger-fabric.readthedocs.io/en/release-1.2/membership/membership.html
这是成员服务提供商(MSP)发挥作用的地方 - 它通过列出其成员的身份或通过识别来识别信任哪些根CA和中间CA以定义信任域(例如组织)的成员.哪些CA被授权为其成员发布有效身份,或者 - 通常情况下 - 通过两者的组合.
我对这一段的理解是这样的:OrgX的MSP要么有一个OrgX成员列表(因此可以简单地根据列表检查网络上的参与者),或者MSP定义允许哪个证书颁发机构发布身份OrgX的成员.这种理解是否正确?
如果OrgX的MSP定义了允许向OrgX成员发放身份的证书颁发机构,那么这如何保护网络免受不必要的参与者的侵害?假设OrgX的MSP使用"Symantec"作为其CA. 因此,拥有赛门铁克证书的每个人都被视为OrgX的成员,并且可以参与该网络.但是,如果我(谁不是OrgX的成员)获得"赛门铁克"的证书怎么办?我现在自动被认为是OrgX的余烬,可以加入网络吗?
有渠道MSP和本地MSP.根据文档,通道MSP和本地MSP都定义哪些标识属于某个组织(例如,OrgX).但是,如果信道MSP包含与本地MSP相同的信息(即基本上是身份列表),那么将信道MSP实例化到节点的重点是什么?
在查看代码示例时,我经常看到服务内部的可观察对象未被取消订阅的情况。
这是一个例子:
export class AuthGuard implements CanActivate {
private isLoggedIn: boolean;
private isLoggedIn$: Observable<boolean>;
constructor(private authService: AuthService, private router: Router) {
this.isLoggedIn$ = this.authService.isLoggedIn();
this.isLoggedIn$.subscribe(res => {
if (res) {
this.isLoggedIn = true;
}
else {
this.isLoggedIn = false;
}
});
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (this.isLoggedIn) {
return true;
}
else {
this.router.navigate(['login']);
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您是否有理由不取消订阅可观察的 this.isLoggedIn$ ?或者上面的例子只是错误的编码导致内存泄漏?
在我的 angular 应用程序中,我遇到了与提出以下问题的人相同的问题: Firebase 踢出当前用户
我希望能够在当前用户(= 创建新用户帐户的管理员)不被踢出的情况下添加一个新用户帐户。
显然,这可以通过创建第二个身份验证参考并使用它来创建用户(请参阅上面链接的问题的已批准答案):
var config = {apiKey: "apiKey",
authDomain: "projectId.firebaseapp.com",
databaseURL: "https://databaseName.firebaseio.com"};
var secondaryApp = firebase.initializeApp(config, "Secondary");
secondaryApp.auth().createUserWithEmailAndPassword(em, pwd).then(function(firebaseUser) {
console.log("User " + firebaseUser.uid + " created successfully!");
//I don't know if the next statement is necessary
secondaryApp.auth().signOut();
});
Run Code Online (Sandbox Code Playgroud)
按照这个答案,我尝试了以下方法:
registerUser(authData: AuthData, participantId: string, role: string): Promise<any> {
let config = {
apiKey: "API-Key",
authDomain: "myApp-a7211.firebaseapp.com",
databaseURL: "https://myApp-a7211.firebaseio.com",
};
let secondaryApp = firebase.initializeApp(config, "Secondary");
return secondaryApp.auth().createUserWithEmailAndPassword(authData.email, authData.password)
.then(function(firebaseUser) {
console.log("User " + firebaseUser + " …Run Code Online (Sandbox Code Playgroud)