Maison  >  Article  >  développement back-end  >  Comment implémenter l’authentification et l’autorisation des utilisateurs en C++ ?

Comment implémenter l’authentification et l’autorisation des utilisateurs en C++ ?

WBOY
WBOYoriginal
2024-06-03 22:35:09735parcourir

La mise en œuvre de l'authentification et de l'autorisation des utilisateurs en C++ implique les étapes suivantes : Stockage sécurisé des noms d'utilisateur et des mots de passe, et hachage des mots de passe. Vérifiez le mot de passe de l'utilisateur lors de sa connexion et autorisez l'accès à l'application. Accordez aux utilisateurs différentes fonctionnalités en fonction de leurs rôles ou autorisations.

Comment implémenter l’authentification et l’autorisation des utilisateurs en C++ ?

Comment implémenter l'authentification et l'autorisation des utilisateurs en C++

L'authentification et l'autorisation des utilisateurs sont des étapes critiques pour garantir la sécurité des applications et la confidentialité des données utilisateur. La mise en œuvre de ces fonctionnalités en C++ implique les étapes suivantes :

1. Stockage des noms d'utilisateur et des mots de passe

Stockez en toute sécurité les noms d'utilisateur et les mots de passe dans une base de données, en hachant les mots de passe à l'aide d'un algorithme cryptographique tel que 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. Authentification de l'utilisateur

Lorsque l'utilisateur tente de se connecter, comparez le mot de passe saisi avec le mot de passe haché dans la base de données et autorisez l'accès.

#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. Autorisation de l'utilisateur

Accordez aux utilisateurs différentes fonctions en fonction de leurs rôles ou autorisations.

#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;
}

En mettant en œuvre ces étapes, vous pouvez créer un système sécurisé d'authentification et d'autorisation des utilisateurs dans votre application C++.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn