资源简介
一个C++ 写的用户权限管理模块,可以实现用户权限的定制,权限监测、用户的增删改查,不使用数据库,所有信息都是用DES加密写入用户信息文件中。防信息篡改
代码片段和文件信息
#include “StdAfx.h“
#include “UserInfo.h“
#include “hl_md5wrapper.h“
CUser::CUser(const std::string& user_nameconst std::string& user_pass)
{
//默认普通用户
m_userId=0;
m_crcValue=0;
m_userState=us_New;
m_parentUserId=0;
memset(m_userName0USER_NAME_BYTE_LEN);
memset(m_passWord0PASSWORD_MD5_BYTE_LEN);
memset(m_priviBits0_ByteSize);
setUserName(user_name);
setUserPassword(user_pass);
}
CUser::CUser()
{
m_userId=0;
m_crcValue=0;
m_parentUserId=0;
m_userState=us_Null;
memset(m_userName0USER_NAME_BYTE_LEN);
memset(m_passWord0PASSWORD_MD5_BYTE_LEN);
memset(m_priviBits0_ByteSize);
}
CUser::CUser(const CUser& cu)
{
m_userId=cu.m_userId;
m_parentUserId=cu.m_parentUserId;
strncpy(m_userNamecu.m_userNameUSER_NAME_BYTE_LEN);
strncpy((char*)m_passWord(char*)cu.m_passWordPASSWORD_MD5_BYTE_LEN);
strncpy(m_priviBitscu.m_priviBits_ByteSize);
m_crcValue=cu.m_crcValue;
m_userState=us_Clone;
}
const CUser& CUser::operator=(const CUser& user)
{
m_userId=user.m_userId;
m_parentUserId=user.m_parentUserId;
strncpy(m_userNameuser.m_userNameUSER_NAME_BYTE_LEN);
strncpy((char*)m_passWord(char*)user.m_passWordPASSWORD_MD5_BYTE_LEN);
strncpy(m_priviBitsuser.m_priviBits_ByteSize);
m_crcValue=user.m_crcValue;
m_userState=us_Clone;
return *this;
}
//获取用户名
std::string CUser::getUserName() const
{
return std::string(m_userName);
}
void CUser::setUserName(const std::string& user_name)
{
memset(m_userName0USER_NAME_BYTE_LEN);
//如果用户设定名称大于系统最大值,将会按最大值进行截取字符串
if (user_name.length()>=USER_NAME_BYTE_LEN)
strncpy(m_userNameuser_name.c_str()USER_NAME_BYTE_LEN-1);
else
strncpy(m_userNameuser_name.c_str()user_name.length());
}
//获取用户id,每个用户具有一个唯一的大于0的数值id
std::size_t CUser::getUserId() const
{
return m_userId;
}
//获取父用户id,
std::size_t CUser::getParentUserId() const
{
return m_parentUserId;
}
//测试本用户是否拥有制定的权限,如果有返回true,否则返回false
bool CUser::testPrivilege(PR_ID pr_id) const
{
if (pr_id<0 || pr_id >=PR_ID::PR_SIZE_END)
return false;
else
return ((m_priviBits[pr_id/8]&((char)1 << pr_id%8)) != 0);
}
//设定用户拥有指定权限
bool CUser::setPrivilege(PR_ID pr_id)
{
if (pr_id>=0 && pr_id {
m_priviBits[pr_id / 8] |=((char)1< return true;
}
else
return false;
}
//清除用户指定的权限
void CUser::clearPrivilege(PR_ID pr_id)
{
if (pr_id>=0 && pr_id m_priviBits[pr_id / 8] &= ~((char)1< }
//清除用户所有的权限
void CUser::clearAllPrivilege()
{
memset(m_priviBits0_ByteSize);
}
//验证用户密码,如果密码正确返回true,否则false
bool CUser::checkUserPassword(const std::string & user_pass) const
{
md5wrapper rap;
const MD5_DIGEST_TYPE& digest=rap.getHashDigestFromString(user_pass);
return digest==m_passWord;
}
//从指定用户复制权限
void CUser::cloneUserPrivilege(const CUser& user)
{
strncpy(m_priviBitsuser.m_priviBits_ByteSize);
}
//设定用户密码????如果宽字符如何处理
void CUser::setUserPassw
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14825 2001-03-05 06:24 CPP_USERMANAGER\lib\des\block.cpp
文件 6671 2001-03-05 06:23 CPP_USERMANAGER\lib\des\block.hpp
文件 7500 2001-03-05 06:24 CPP_USERMANAGER\lib\des\des.cpp
文件 3762 2001-03-05 06:23 CPP_USERMANAGER\lib\des\des.hpp
文件 2390 2001-03-05 06:24 CPP_USERMANAGER\lib\des\dessboxes.hpp
文件 5147 2001-03-05 06:23 CPP_USERMANAGER\lib\des\globals.hpp
文件 759 2010-01-12 20:58 CPP_USERMANAGER\lib\des\说明.txt
目录 0 2010-08-07 08:48 CPP_USERMANAGER\lib\des
文件 7666 2010-01-12 21:01 CPP_USERMANAGER\lib\DES加密算法(c++).rar
文件 3124 2008-01-09 15:49 CPP_USERMANAGER\lib\md5\hl_exception.h
文件 13281 2008-02-02 17:34 CPP_USERMANAGER\lib\md5\hl_md5.cpp
文件 6685 2008-02-02 17:34 CPP_USERMANAGER\lib\md5\hl_md5.h
文件 7050 2010-01-01 11:22 CPP_USERMANAGER\lib\md5\hl_md5wrapper.cpp
文件 5754 2010-01-01 11:34 CPP_USERMANAGER\lib\md5\hl_md5wrapper.h
文件 2297 2008-02-02 17:55 CPP_USERMANAGER\lib\md5\hl_types.h
目录 0 2010-08-07 08:48 CPP_USERMANAGER\lib\md5
目录 0 2010-08-07 08:48 CPP_USERMANAGER\lib
文件 624 2010-01-23 15:09 CPP_USERMANAGER\security\secu.data
文件 624 2010-01-10 11:33 CPP_USERMANAGER\security\secu.data.bak
目录 0 2010-01-23 15:04 CPP_USERMANAGER\security
文件 4014 2010-01-19 20:58 CPP_USERMANAGER\UserInfo.cpp
文件 3970 2010-01-19 21:00 CPP_USERMANAGER\UserInfo.h
文件 12222 2010-02-06 12:45 CPP_USERMANAGER\UserManager.cpp
文件 4665 2010-01-19 21:24 CPP_USERMANAGER\UserManager.h
文件 940 2010-01-19 21:00 CPP_USERMANAGER\UserPrivilegeConfig.cpp
文件 1333 2010-01-19 21:25 CPP_USERMANAGER\UserPrivilegeConfig.h
文件 551 2010-08-07 09:28 CPP_USERMANAGER\使用说明.txt
目录 0 2010-08-07 08:52 CPP_USERMANAGER
----------- --------- ---------- ----- ----
115854 28
............此处省略1个文件信息
- 上一篇:AES算法的C语言版本
- 下一篇:C++面试题常见问题
相关资源
- C++面试题常见问题
- C++实现HTTP处理类
- C++2017.txt
- C.C++笔试面试必备宝典我就靠它进的公
- 02_C++PrimerPlus_中文版_第6版_超清.txt
- C++自绘柱状图.rar
- 自己写的元胞自动机NS模型
- 2048C++版本带图形界面
- CGridListCtrlEx源码vc++
- 使用C++的二叉搜索树实现学生成绩管
- 狼吃羊C++代码
- 语音识别系统源码
- libstdc++-3.4.6-9.i386_libstdc++-3.4.6-11.x86_
- C++ Builder DLL
- windows下c实现telnet代码
- 梯度下降求函数极值C++代码
- VC++ 串口调试助手源代码
- 基于QtQuick的QCustomPlot实现
- 04737 C++程序设计 精讲 串讲 笔记 音频
- 矩阵类的运算符重载
- vc++做的考试系统c/s模式
- KCF跟踪算法c++
- ftp的C++源码实现,可以进行文件传输
- c++实现计算器
- VC++ 向指定串口发送和接收数据可十六
- 数据结构课程设计CC++描述[阮宏一][程
- vc++FTP搜索工具()
- 基于VC++的图像修复源代码
- Google C++编码规范
- 简单电梯c++实现
评论
共有 条评论