资源简介
1.使用C++实现的权限管理模块
2.单例模式实现,方便集成
3.实现了root和普通用户区别,添加新用户,修改密码
4.用户名密码以加密文档形式存在本地文件
代码片段和文件信息
#include “stdafx.h“
#include “AuthorityManagement.h“
namespace cis
{
//using singleton
AuthorityManagement* AuthorityManagement::instance = new AuthorityManagement();
AuthorityManagement* AuthorityManagement::getInstance()
{
return instance;
}
AuthorityManagement::AuthorityManagement()
{
m_Key = “dasidaiousdadfkjdhIJpqwieTGYU“;
m_isInitialized = false;
}
AuthorityManagement::~AuthorityManagement()
{
}
int AuthorityManagement::Initialization()
{
//打开存放用户信息的txt
ifstream readUserInfo;
readUserInfo.open(“UserInfo.txt“);
if (!readUserInfo.is_open())
{
return 0;
}
//从txt中读入用户信息
string userName;
string password;
while (getline(readUserInfo userName))
{
decrypt(userName);
getline(readUserInfo password);
decrypt(password);
m_UserInfo[userName] = password;
}
//关闭ifstream
readUserInfo.close();
m_isInitialized = true;
return 1;
}
string AuthorityManagement::getCurrentUser()
{
return m_CurrentUser;
}
int AuthorityManagement::logout()
{
m_CurrentUser.clear();
return 1;
}
int AuthorityManagement::signIn(string userName string password)
{
//必须在权限管理模块初始化完成后才能登录
if (!m_isInitialized)
{
return false;
}
//首先检查是否存在用户名
if (m_UserInfo.count(userName))
{
//如果密码正确就能登录系统
if (m_UserInfo[userName] == password)
{
m_CurrentUser = userName;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
int AuthorityManagement::addUser(string userName string password)
{
//必须在权限管理模块初始化完成后才能登录
if (!m_isInitialized)
{
return false;
}
//非管理员没有权限添加新用户
if (m_CurrentUser!=“root“)
{
return false;
}
//禁止添加相同用户名的用户
if (m_UserInfo.count(userName))
{
return false;
}
ofstream writeUserInfo;
//打开文件以追加方式打开
writeUserInfo.open(“UserInfo.txt“ ios_base::app);
if (!writeUserInfo.is_open())
{
return false;
}
string cipherUserName = userName;
encrypt(cipherUserName);
string cipherPassword = password;
encrypt(cipherPassword);
writeUserInfo << cipherUserName << endl;
writeUserInfo << cipherPassword << endl;
writeUserInfo.close();
m_UserInfo[userName] = password;
return true;
}
int AuthorityManagement::addRoot(string password)
{
ofstream writeUserInfo;
//打开文件以追加方式打开
writeUserInfo.open(“UserInfo.txt“);
if (!writeUserInfo.is_open())
{
return false;
}
string cipherUserName = “root“;
encrypt(cipherUserName);
string cipherPassword = password;
encrypt(cipherPassword);
writeUserInfo << cipherUserName << endl;
writeUserInfo << cipherPassword << endl;
writeUserInfo.close();
m_UserInfo[“root“] = password;
return true;
}
int AuthorityManagement::modifyPassword(string password)
{
//必须在权限管理模块初始化完成后才能登录
if (!m_isInitialized)
{
return false;
}
//必须在登录的情况下才能修改密码
if (!m_CurrentUser.size())
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4764 2018-05-25 21:24 testAuthorityManagement\AuthorityManagement.cpp
文件 1183 2018-05-25 20:43 testAuthorityManagement\AuthorityManagement.h
文件 1169 2018-05-25 20:41 testAuthorityManagement\testAuthorityManagement.cpp
目录 0 2018-05-25 21:29 testAuthorityManagement
----------- --------- ---------- ----- ----
7116 4
- 上一篇:拼图游戏大型课程设计C# C++
- 下一篇:图书管理系统c++ 数据库
相关资源
- 图书管理系统c++ 数据库
- 拼图游戏大型课程设计C# C++
- cminus语法分析器源代码完整版
- sqlParserC++
- C++Primer中文版第五版
- 信息学奥赛一本通C++第五版pdf以及配
- 《Linux多线程服务端编程:使用muduo
- 信息学奥赛一本通C++版配套光盘第五
- C++编程思想两卷合订本_带书签_高清完
- 编译原理--语法分析 实验 C++版
- Opencv C++数字图像处理——空域增强
- opencv和C++版相机标定
- 计算机图形学基础教程 VisualC++版 习
- 深入应用C++11完整版本.pdf.rar
- 大规模C++ 程序设计高清pdf
- 人群计数-c++实现内有caffemodel和deplo
- C++(qt)游戏实战项目:坦克大战(源
- Visual C++ Build Tools 2015 离线包.part7/7
- c++从入门到精通第2版
- Qt5.9C++开发指南 源码 资源.zip
- windows pe 权威指南.pdf C++反汇编与逆向
- VC++运行库一键安装
- yolov3+opencv3.4.2 C++源码
- Qt5.9 c++开发指南.part1.rar
- 编译原理--递归下降分析程序C++
- 深入理解C++11:C++11新特性解析与应用
- C++Test9.5的插件版3
- C++ Primer 5th Edition 中文 第5版 PDF 扫描
- c++builder 6技术大全
- MSVisualC++运行库/Microsoft Visual C++(20
评论
共有 条评论