【发布时间】:2017-11-29 22:37:24
【问题描述】:
我正在编写一个程序(主要用于教育目的,但如果我喜欢它,我以后可能会在更大的项目中使用它)用于用户名+密码身份验证。到目前为止我所拥有的“有效”,这意味着没有错误,但它的行为确实有点奇怪。它在退出之前执行了 STUFF() 大约 9 次(我没有保存确切的输出),而它只打算执行一次。
我怎样才能让它做 STUFF() 一次?如何使密码输入不可见?我如何才能总体上提高安全性/语法或使其更短?
#include <iostream>
using namespace std;
void STUFF()
{
cout << "Doing stuff..." << endl;
}
int CREDS;
void AUTH()
{
cout << "Username: "; string USER; cin >> USER;
cout << "Password: "; string PASS; cin >> PASS;
if (USER == "josh" and PASS == "passwd")
{
CREDS = 0;
}
else
{
CREDS = 1;
};
}
void RETRY()
{
cout << "Authentication failed! Try again? [Y/n]" << endl; char REPLY; cin >> REPLY;
if (REPLY == 'Y' or REPLY == 'y')
{
AUTH();
}
else if (REPLY == 'N' or REPLY == 'n')
{
cout << "Exiting..." << endl;
}
else
{
RETRY();
};
}
int main()
{
AUTH();
if (CREDS == 0)
{
STUFF();
return 0;
}
else if (CREDS == 1)
{
RETRY();
};
}
【问题讨论】:
-
无法复制:ideone.com/EPnGn4
-
另外,您的 RETRY 代码不会像您预期的那样运行。它不会循环,所以即使你输入“Y”程序也会退出。
-
我再次测试(重点是获取用户并通过错误重试)。选择 no exited 并选择 yes 然后让它们正确退出而不做任何事情。编辑:再次复制该结果两次,然后第一次让用户/通过正确,并打印“身份验证失败!再试一次?”正好 9 次
标签: c++ authentication