環境:
1. 程式:asp.net
2. 語法:C#
3. 系統登入機制:使用asp.net提供的帳號管理
準備工作:
1. 資料庫增加一個"asp.net帳號管理"與UserID的Mapping表,以身份證字號為key。
2. 撰寫新增帳號的function(功能:當遇到新使用者,利用Membership.CreateUser新增asp.net帳號,並同步寫入Mapping表)
我的登入流程:
1. 由系統按登入鈕後,轉址至我的E政府網站,並依照E政府規定格式擺上returnurl與level參數(例:https://www.cp.gov.tw/portal/Clogin.aspx?returnurl=導回頁網址&level=2)
2. 使用者輸入正確的Ping碼並驗證成功後,E政府會依照上步驟returnurl參數將網頁轉址回來。(註:returnurl必須與"既有服務檔案表"內填寫的網址相同)
3. 回到導回頁後,利用Request.Params["twGovT1"].ToString()取得token1,並適當地將其記錄下來。
string token1 = Request.Params["twGovT1"] == null ? "" : Request.Params["twGovT1"].ToString();
4. 利用token1向E政府提供之WebService取得身份證字號(服務位置:https://se.cp.gov.tw/SEWebApplication/AAmediator.asmx,服務名稱:ValidateToken1)
public string GetUID(string token1)
{
try
{
tw.gov.cp.se.AAMediator govpc = new tw.gov.cp.se.AAMediator();
string govcpData = govpc.ValidateToken1(token1);
XmlDocument xml = new XmlDocument();
xml.LoadXml(govcpData);
string UID = xml.GetElementsByTagName("UID").Item(0).FirstChild.Value;
return UID;
}
catch
{
return "Error";
}
}
若是環境有proxy設定,請參考:asp.net_有proxy時連接WebService
5. 利用步驟四得到的身份證字號與資料庫內的會員資料比對,找出會員UID。
6. 以該UID登入asp.net的帳號管理。
FormsAuthentication.RedirectFromLoginPage("user01", false);
簡單來說:
1. 由E政府取得身分證字號。
2. 由身分證字號找到Mapping表內的User。
3. 系統幫User登入。
沒有留言:
張貼留言