新聞中心
聯(lián)動(dòng)實(shí)現(xiàn)用戶認(rèn)證——MFC登錄實(shí)戰(zhàn)

隨著互聯(lián)網(wǎng)的普及和發(fā)展,我們的日常生活中離不開(kāi)各種網(wǎng)絡(luò)應(yīng)用,而登錄則是這些應(yīng)用中必不可少的一個(gè)環(huán)節(jié)。而在網(wǎng)絡(luò)應(yīng)用中的安全性則會(huì)涉及到用戶的認(rèn)證問(wèn)題。在這里,我們將介紹利用MFC進(jìn)行用戶認(rèn)證的實(shí)踐方法。
MFC是一種Microsoft基于C++的類庫(kù),它可以方便地編寫Windows應(yīng)用程序。而在網(wǎng)絡(luò)應(yīng)用的開(kāi)發(fā)中,我們可以利用MFC的C++開(kāi)發(fā)用戶認(rèn)證模塊。
在用戶認(rèn)證方面,可以采取單獨(dú)開(kāi)發(fā)的認(rèn)證系統(tǒng),還可以利用現(xiàn)有的認(rèn)證系統(tǒng)進(jìn)行用戶認(rèn)證。而這時(shí)需要在本地上運(yùn)行一個(gè)認(rèn)證系統(tǒng),這個(gè)認(rèn)證系統(tǒng)就要負(fù)責(zé)客戶端所有的用戶認(rèn)證。
如果用戶認(rèn)證系統(tǒng)采取了一個(gè)相對(duì)獨(dú)立的認(rèn)證服務(wù),那么客戶端就需要訪問(wèn)這個(gè)認(rèn)證系統(tǒng)。而在用戶認(rèn)證系統(tǒng)和客戶端之間進(jìn)行數(shù)據(jù)傳輸時(shí),就需要利用網(wǎng)絡(luò)傳輸協(xié)議,比如TCP或UDP等協(xié)議來(lái)傳輸數(shù)據(jù)。
最常見(jiàn)的網(wǎng)絡(luò)傳輸協(xié)議是HTTP協(xié)議和HTTPS協(xié)議。這兩種協(xié)議都采用了加密機(jī)制,但HTTPS協(xié)議比HTTP協(xié)議更加安全,因?yàn)镠TTPS協(xié)議采用了SSL協(xié)議進(jìn)行數(shù)據(jù)傳輸。
下面我們將介紹如何利用MFC實(shí)現(xiàn)用戶認(rèn)證模塊:
首先確定客戶端的架構(gòu)??蛻舳丝赡苁且粋€(gè)桌面應(yīng)用程序或是一個(gè)Web應(yīng)用程序。如果是桌面應(yīng)用程序,則需要通過(guò)Windows API或MFC類庫(kù)來(lái)完成用戶認(rèn)證邏輯的編寫。
為了避免代碼重復(fù),可以將客戶端的代碼邏輯和服務(wù)器端的代碼邏輯分離,采用SOA(Service Oriented Architecture)的架構(gòu)方式。客戶端只需要提供接口,而服務(wù)器端則負(fù)責(zé)實(shí)現(xiàn)具體的業(yè)務(wù)邏輯。
接著需要確定客戶端和服務(wù)器端之間的通信協(xié)議。常用的通信協(xié)議有TCP和UDP。如果要保證通信的安全性,可以采用SSL/TLS協(xié)議來(lái)進(jìn)行數(shù)據(jù)傳輸。
在MFC中,可以利用WinInet方法和WinSock方法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。
同時(shí),還需要確定客戶端和服務(wù)器端之間的認(rèn)證方式。我們可以采用通行的用戶名密碼認(rèn)證方式,也可以采用更加安全的RSA公鑰認(rèn)證方式。
在實(shí)現(xiàn)RSA公鑰認(rèn)證時(shí),需要生成一對(duì)RSA密鑰,并將公鑰傳輸?shù)娇蛻舳?。客戶端在發(fā)送數(shù)據(jù)時(shí),需要將數(shù)據(jù)進(jìn)行RSA加密并在傳輸前附加一個(gè)時(shí)間戳。服務(wù)器端在接收到數(shù)據(jù)后,需要先驗(yàn)證時(shí)間戳的有效性,再通過(guò)RSA私鑰解密數(shù)據(jù)。
在實(shí)現(xiàn)用戶認(rèn)證模塊過(guò)程中,還需要注意以下幾點(diǎn):
1.輸入數(shù)據(jù)的合法性校驗(yàn),比如密碼的長(zhǎng)度限制、特殊字符的過(guò)濾等。
2.數(shù)據(jù)傳輸過(guò)程的安全性保證,比如利用SSL/TLS協(xié)議對(duì)數(shù)據(jù)進(jìn)行加密傳輸、禁止在網(wǎng)絡(luò)傳輸過(guò)程中明文傳輸用戶密碼等。
3.數(shù)據(jù)傳輸過(guò)程的可靠性保證,比如采用TCP協(xié)議進(jìn)行數(shù)據(jù)傳輸,在數(shù)據(jù)傳輸過(guò)程中發(fā)生網(wǎng)絡(luò)異常時(shí)可以重新連接服務(wù)器。
通過(guò)以上步驟的實(shí)現(xiàn),我們就可以通過(guò)MFC來(lái)搭建用戶認(rèn)證模塊,從而實(shí)現(xiàn)聯(lián)動(dòng)實(shí)現(xiàn)用戶認(rèn)證的目的。
需要提醒的是,在實(shí)現(xiàn)用戶認(rèn)證模塊時(shí),一定要遵循安全原則,從而保證應(yīng)用程序的安全性,保護(hù)用戶的隱私信息。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220我最近在用MFC編寫學(xué)生成績(jī)管理系統(tǒng)(對(duì)話框程序)。需要在登錄頁(yè)面自己成績(jī)管理頁(yè)面用到數(shù)據(jù)庫(kù)??墒?/h3>
使用ADO連接數(shù)據(jù)庫(kù)
1、導(dǎo)入存放ADO組模攜敗件隱伏的庫(kù)文件旦顫。在stdafx.h文件中加入下列語(yǔ)句:
#import “c:\program Files\Common Files\system\ado\msado15.dll” no_namespace rename(“EOF”,”EndOfFile”) rename(“BOF”,”FirstOfFile”)
#include “icrsint.h”
ADO組件存放在msado15.dll文件中,導(dǎo)入該文件時(shí),要重新定義EOF和BOF,以便與VC中ios.h、stdio.h中的EOF和BOF區(qū)別開(kāi)來(lái)。
icrsint.h文件中包含了ADO控件的聲明。
2、在應(yīng)用程序類的InitInstance函數(shù)中加入:
AfxOleInit(); //初始化COM組件環(huán)境
3、為視圖類增加成員:
_ConnectionPtr m_myConnection; //連接對(duì)象
_RecordsetPtr m_myRSStudent; //記錄集
_RecordsetPtr m_myRS1; //記錄集
4、在修改視圖類的OnInitUpdate函數(shù):
HRESULT hr;
try{hr = m_myConnection.CreateInstance(“ADODB.Connection”); //創(chuàng)建連接實(shí)例if(SUCCEEDED(hr))hr =
m_myConnection->
Open(“Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=db1.mdb;”, “”, “”,adModeUnknown);
//打開(kāi)連接,連接到數(shù)據(jù)庫(kù)}
catch(_com_error e){
CString errormessage;
errormessage.Format(“Connection failed\nInformation:%s”,e.ErrorMessage());
AfxMessageBox(errormessage);}
m_myRSStudent.CreateInstance(“ADODB.Recordset”);
m_myRSStudent->Open(“select * from student”, //獲取數(shù)據(jù)的SQL語(yǔ)句m_myConnection.GetInterfacePtr(), //記錄集獲取數(shù)據(jù)時(shí)使用的連接adOpenDynamic,adLockOptimistic,adCmdText);//動(dòng)態(tài)集、優(yōu)化鎖、SQL命令形式
執(zhí)行完這段代碼后,數(shù)據(jù)庫(kù)表student中的數(shù)據(jù)被提取到m_myRS所管理的內(nèi)存區(qū)域。m_myRS1.CreateInstance(“ADODB.Recordset”);
m_myRS1->Open(“select * from Class”,
m_myConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
_variant_t vName; //變體數(shù)據(jù)類型,可以存放任意類型的數(shù)據(jù)
while(!m_myRS1->EndOfFile)
{vName = m_myRS1->GetCollect(“ClassName”);//獲取字段內(nèi)容m_TreeView.InsertItem((_bstr_t)vName); //填充TreeView
m_myRS1->MoveNext();}
m_ListView.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_ListView.InsertColumn(0,”學(xué)號(hào)”,LVCFMT_CENTER,60);
m_ListView.InsertColumn(1,”姓名”,LVCFMT_CENTER,60);
m_ListView.InsertColumn(2,”數(shù)學(xué)”,LVCFMT_CENTER,60);
m_ListView.InsertColumn(3,”英語(yǔ)”,LVCFMT_CENTER,60);
m_ListView.InsertColumn(4,”計(jì)算機(jī)”,LVCFMT_CENTER,60);}
幾個(gè)小時(shí)?那你還不如發(fā)貼找人幫你寫,學(xué)個(gè)鳥(niǎo)
MFC 在用戶界面對(duì)數(shù)據(jù)庫(kù)的操作
不同的數(shù)據(jù)庫(kù),操作是不一樣的。
如:
MFC中簡(jiǎn)單的數(shù)據(jù)庫(kù)宏手文件操作(添加,修改,查找,刪凱枝除蔽孫嫌)
完整的VC下SQLite的使用
緊急: 求一段c++MFC登陸界面代碼 ,用文本text支持的
CString name,pass;
GetDlgItem(用戶笑旦數(shù)名ID)->GetWindowText(name);
GetDlgItem(用戶密碰首碼遲簡(jiǎn)ID)->GetWindowText(pass);
這個(gè)。。。。MFC 基于對(duì)話框,一個(gè)拖拽完成。
關(guān)于mfc登陸界面代碼與數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開(kāi)發(fā),成都網(wǎng)絡(luò)營(yíng)銷推廣等一站式服務(wù)。
名稱欄目:聯(lián)動(dòng)實(shí)現(xiàn)用戶認(rèn)證——mfc登錄實(shí)戰(zhàn)(mfc登陸界面代碼與數(shù)據(jù)庫(kù))
文章鏈接:http://m.5511xx.com/article/dhceeij.html


咨詢
建站咨詢
