Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pengesahan dan kebenaran pengguna dalam C++?

Bagaimana untuk melaksanakan pengesahan dan kebenaran pengguna dalam C++?

WBOY
WBOYasal
2024-06-03 22:35:09688semak imbas

Melaksanakan pengesahan dan kebenaran pengguna dalam C++ melibatkan langkah-langkah berikut: Menyimpan nama pengguna dan kata laluan dengan selamat dan kata laluan pencincangan. Sahkan kata laluan pengguna apabila mereka log masuk dan benarkan akses kepada aplikasi. Berikan pengguna keupayaan berbeza berdasarkan peranan atau kebenaran mereka.

Bagaimana untuk melaksanakan pengesahan dan kebenaran pengguna dalam C++?

Cara melaksanakan pengesahan dan kebenaran pengguna dalam C++

Pengesahan dan kebenaran pengguna adalah langkah kritikal untuk memastikan keselamatan aplikasi dan kerahsiaan data pengguna. Melaksanakan ciri-ciri ini dalam C++ melibatkan langkah-langkah berikut:

1. Nama pengguna dan Penyimpanan Kata Laluan

Simpan nama pengguna dan kata laluan dengan selamat dalam pangkalan data, pencincangan kata laluan menggunakan algoritma kriptografi seperti SHA-256.

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <iomanip>

using namespace std;

int main()
{
    // 打开数据库文件
    ifstream database("users.db");

    // 读取用户名和密码对
    string line;
    while (getline(database, line))
    {
        // 使用逗号分隔符将行拆分为用户名和密码
        stringstream ss(line);
        string username, password;
        getline(ss, username, ',');
        getline(ss, password);

        // 将密码进行 SHA-256 哈希处理
        string hashedPassword = sha256(password);

        // 将哈希后的密码和用户名存储在数据库中
        ofstream output("users.db", ios::out | ios::app);
        output << username << "," << hashedPassword << endl;
    }

    return 0;
}

2. Pengesahan Pengguna

Apabila pengguna cuba log masuk, bandingkan kata laluan yang dimasukkan dengan kata laluan yang dicincang dalam pangkalan data dan benarkan akses.

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>

using namespace std;

int main()
{
    // 获取用户的用户名和密码
    string username, password;
    cout << "Enter username: ";
    cin >> username;
    cout << "Enter password: ";
    cin >> password;

    // 从数据库中读取哈希密码
    string hashedPassword;
    ifstream database("users.db");
    while (getline(database, line))
    {
        // 将行拆分为用户名和密码
        stringstream ss(line);
        string dbUsername, dbPassword;
        getline(ss, dbUsername, ',');
        getline(ss, dbPassword);

        // 检查用户名是否匹配
        if (username == dbUsername)
        {
            hashedPassword = dbPassword;
            break;
        }
    }

    // 比较输入的密码和数据库中的哈希密码
    string inputHashedPassword = sha256(password);
    if (inputHashedPassword == hashedPassword)
    {
        cout << "Authentication successful" << endl;
    }
    else
    {
        cout << "Authentication failed" << endl;
    }

    return 0;
}

3. Kebenaran pengguna

Beri pengguna fungsi yang berbeza berdasarkan peranan atau kebenaran mereka.

#include <iostream>
#include <map>

using namespace std;

int main()
{
    // 创建一个保存角色和授权的映射
    map<string, string> roles = {
        {"admin", "READ, WRITE, DELETE"},
        {"user", "READ, WRITE"},
        {"viewer", "READ"}
    };

    // 获取用户的角色
    string role;
    cout << "Enter your role: ";
    cin >> role;

    // 检查用户的授权
    if (roles.find(role) == roles.end())
    {
        cout << "Invalid role" << endl;
    }
    else
    {
        // 获取用户的授权并打印出来
        string permissions = roles[role];
        cout << "Permissions: " << permissions << endl;
    }

    return 0;
}

Dengan melaksanakan langkah-langkah ini, anda boleh membina sistem pengesahan dan kebenaran pengguna yang selamat dalam aplikasi C++ anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan dan kebenaran pengguna dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn