我最近在Flex应用程序中查看了自定义身份验证教程。通过从RemoteObject获取ChannelSet来管理登录:
private function creationCompleteHandler():void {
if (cs == null)
cs = ServerConfig.getChannelSet(remoteObject.destination);
}
// Login and handle authentication success or failure.
private function ROLogin():void {
// Make sure that the user is not already logged in.
if (cs.authenticated == false) {
token = cs.login("sampleuser", "samplepassword");
// Add result and fault handlers.
token.addResponder(new AsyncResponder(LoginResultEvent, LoginFaultEvent));
}
}
之后,channlset可以与ChannelSet的login命令一起使用。我怎样才能确保这是使用安全连接?我知道有一个amf频道和一个安全的amf频道。但是如何判断在安全连接中提供凭据?
答案 0 :(得分:3)
通常,ChannelSet定义了一组定义故障转移策略的通道,而不是作为安全/非安全分段的一部分。
混合加密&同一个频道集中的非加密频道并没有多大意义。
当channelSet定义了多个通道时,Flex客户端将尝试连接第一个通道,然后正常连接到下一个通道,然后直到建立连接,或者所有通道都耗尽。
如果你想同时拥有安全和安全定义了非安全通道,您可以典型地定义两个通道组 - 每个通道组一个:
<s:ChannelSet id="channelSet">
<s:AMFChannel url="http://myserver:8080/myapp/messagebroker/amf" />
</s:ChannelSet>
<s:ChannelSet id="encryptedChannelSet">
<s:SecureAMFChannel url="https://myserver:8080/myapp/messagebroker/amf" />
</s:ChannelSet>
public function logon():void
{
// Credentials are passed via https
encryptedChannelSet.login("username","password");
}
文档中 的内容是,假设channelSet
和encryptedChannelSet
都属于同一个messageBroker,可以使用身份验证状态和用户凭据。两个channelSets。
FlexContext
保持与浏览器会话关联的身份验证状态,而不是特定的channel或channelSet。
因此,在对encryptedChannelSet
进行身份验证后,现在可以访问受保护且需要用户凭据的channelSet
公开的目标。