osgDB.AuthenticationMap类用于储存用于认证某些资源的凭证。在加载带有认证需求的资源时,用户必须提供适当的凭证才能获得访问权限。该类允许开发人员在运行时动态添加和删除凭证,同时还支持从文件加载和保存凭证。
typedef std::map<std::string,std::string> AuthenticationData;
typedef std::map<std::string,AuthenticationData> AuthenticationMapData;
AuthenticationData
是一个从字符串到字符串的映射,用于保存凭证的键值对。AuthenticationMapData
是一个从字符串到AuthenticationData
的映射,用于保存不同资源所需的凭证。
AuthenticationMap();
构造一个新的AuthenticationMap
对象。
void addAuthentication(const std::string& source,const std::string& key,const std::string& value);
向AuthenticationMap
中添加一个凭证。source
参数是指资源的ID或名称,key
参数是指凭证的键,value
参数是指凭证的值。
void addAuthentication(const std::string& source,const AuthenticationData& data);
向AuthenticationMap
中添加一个凭证。source
参数是指资源的ID或名称,data
参数是一个AuthenticationData
实例,其中包含了需要的凭证。
bool getAuthentication(const std::string& source,const std::string& key,std::string& value) const;
从AuthenticationMap
中获取一个凭证。如果该凭证不存在,返回false
;否则返回true
,并将凭证的值赋值给value
参数。
bool getAuthentication(const std::string& source,const AuthenticationData*& data) const;
从AuthenticationMap
中获取一个资源的所有凭证。如果该资源不存在任何凭证,则返回false
;否则返回true
,并将AuthenticationData
对象的指针赋值给data
参数。
void removeAuthentication(const std::string& source,const std::string& key);
从AuthenticationMap
中移除指定资源的指定凭证。
void removeAuthentication(const std::string& source);
从AuthenticationMap
中移除指定资源的所有凭证。
bool readFromFile(const std::string& filename);
从文件中加载凭证,并将其添加到AuthenticationMap
中。该方法返回true
表示加载成功,返回false
表示加载失败。filename
参数是需要加载的文件名。
bool writeToFile(const std::string& filename) const;
将AuthenticationMap
中的凭证保存到文件。该方法返回true
表示保存成功,返回false
表示保存失败。filename
参数是要保存的文件名。
// 创建一个新的AuthenticationMap实例
osgDB::AuthenticationMap authMap;
// 添加凭证
authMap.addAuthentication("http://www.example.com", "username", "password");
// 获取指定凭证
std::string value;
bool success = authMap.getAuthentication("http://www.example.com", "username", value);
// 获取指定资源所有凭证
const AuthenticationData* data = nullptr;
success = authMap.getAuthentication("http://www.example.com", data);
// 从文件中加载凭证
success = authMap.readFromFile("authMap.txt");
// 保存凭证到文件
success = authMap.writeToFile("authMap.txt");