如何保护adminID的安全性

本文介绍了如何通过回收管理员ID、更改密码等措施加强DOMINO服务器的安全性,并详细记录了操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实是不知道标题要写什么,呵...

公司的DOMINO服务器在运用初期,由于对权限控管不严,一切的动作全部依据一个admin ID文件,不仅对管理不利,而且在一些事情发生时,也不容易查到根源,没有办法准确定位.现在就想着将管理员ID全部收回,然后更改admin的密码,并让之前持有adminID文件的,凭旧密码全部不能登录DOMINO服务器.保证了服务器的安全.

具体步骤记录如下:

 一.在domino server document中,将security中的security setting项设置如下:

二.打开admin的person文档,在administrator项的password management项设置如下:

三.打开"文件---安全----用户安全",修改完口令即可.

四.尝试用原先旧的ID及密码去访问,会发现类似"与存在的另一份拷贝口令不同,需要更改拷贝中的口令"的相关提示.

#include <iostream> #include <map> #include <string> #include <vector> #include <algorithm> using namespace std; // 图书状态枚举 enum BookState { ON_SHELF, // 在书架上 IN_LIBRARY, // 在馆内(未上架) BORROWED // 已借出 }; // 图书类 class Book { public: string bookID; // 图书条形码 string title; string author; BookState state; Book(string id, string t, string a) : bookID(id), title(t), author(a), state(ON_SHELF) { } }; // 读者类 class Reader { public: string PIN; // 借书证号 string name; map<string, Book*> borrowedBooks; // 已借图书 Reader(string pin, string n) : PIN(pin), name(n) {} // 借书方法 void borrowBook(Book* book) { if (book->state == ON_SHELF) { book->state = BORROWED; borrowedBooks[book->bookID] = book; } } // 还书方法 void returnBook(string bookID) { auto it = borrowedBooks.find(bookID); if (it != borrowedBooks.end()) { it->second->state = ON_SHELF; borrowedBooks.erase(it); } } }; // 管理员类 class Librarian { public: string adminID; Librarian(string id) : adminID(id) {} // 添加图书 void addBook(map<string, Book*>& books, Book* newBook) { books[newBook->bookID] = newBook; } // 添加读者 void addReader(map<string, Reader*>& readers, Reader* newReader) { readers[newReader->PIN] = newReader; } }; class Database { private: map<string, Book*> books; // 图书数据库 map<string, Reader*> readers; // 读者数据库 Librarian* admin; // 管理员账户 public: Database() { // 初始化管理员 admin = new Librarian("admin001"); } ~Database() { // 清理内存 for (auto& b : books) delete b.second; for (auto& r : readers) delete r.second; delete admin; } // 图书操作 void addBook(string id, string title, string author) { admin->addBook(books, new Book(id, title, author)); } // 读者操作 void addReader(string pin, string name) { admin->addReader(readers, new Reader(pin, name)); } // 借书操作 bool borrowBook(string pin, string bookID) { auto readerIt = readers.find(pin); auto bookIt = books.find(bookID); if (readerIt != readers.end() && bookIt != books.end()) { readerIt->second->borrowBook(bookIt->second); return true; } return false; } // 搜索图书 Book* searchBook(string query) { auto it = books.find(query); if (it != books.end()) return it->second; // 按标题搜索 for (auto& b : books) { if (b.second->title.find(query) != string::npos) { return b.second; } } return nullptr; } }; #include <conio.h> // 用于密码输入 // 控制台界面类 class LibraryUI { private: Database db; void showMainMenu() { system("cls"); cout << "==== 图书馆管理系统 ====\n"; cout << "1. 读者登录\n"; cout << "2. 管理员登录\n"; cout << "3. 退出系统\n"; cout << "请选择: "; } void readerMenu(string pin) { // 读者功能菜单实现 } void adminMenu() { // 管理员功能菜单实现 } public: void run() { // 初始化测试数据 db.addBook("B001", "C++ Primer", "Lippman"); db.addBook("B002", "设计模式", "Erich Gamma"); db.addReader("R1001", "张三"); while (true) { showMainMenu(); int choice; cin >> choice; switch (choice) { case 1: { string pin; cout << "输入读者证号: "; cin >> pin; readerMenu(pin); break; } case 2: { string password; cout << "输入管理员密码: "; char ch; // 密码隐藏输入 while ((ch = _getch()) != '\r') { password.push_back(ch); cout << '*'; } cout << endl; if (password == "admin123") { adminMenu(); } else { cout << "密码错误!\n"; } break; } case 3: return; default: cout << "无效选择\n"; } } } }; int main() { LibraryUI system; system.run(); return 0; }
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值