iT邦幫忙

0

C#撰寫 Web API之 Post驗證帳密功能(求助)

  • 分享至 

  • xImage

各位先進好,小弟不才,專題到了尾聲,發現一個最基本的功能不會寫...
就是登入功能,小弟對於這塊並不熟悉,只用到最簡單的GET()與POST()來串接前台。

目前架構是這樣的,API中用資料庫模型來連接MSSQL,在controller中使用GET與POST

這是GET資料庫中"DATA"欄位的所有值,並且輸出JSON,以利前端使用。

 public object Get()
        {
            using (apidataEntities entities = new apidataEntities())
            {
                var SQLjsonndata = entities.DATAs.ToList();
                return new
                {
                    DATA = SQLjsonndata
                };
            }
        }

這是POST的使用,因為我們有作到APP的推播功能,所以利用POST把手機的TOKEN丟到MSSQL中。

public void Post([FromBody]FCMToken tk)
        {
            using (apidataEntities entities = new apidataEntities())
            {
                entities.FCMTokens.Add(tk);
                entities.SaveChanges();
            }
        }

API僅利用以上兩個功能

小弟的問題是,如何使用POST呈現帳號密碼驗證的功能(到MSSQL中的帳號密碼TALBE去驗證、TABLE內只有兩個欄位"ID","PASSWORD")

想要前台利用我的WEB API URL POST() 輸入一組ID與PASSWORD,到後台(API端MSSQL比對資料表),如果資料相符回傳json字串供前台判斷 true => 登入
false => 登入失敗

小弟研究了許久,有好多種形形色色的加密模式等,但是我們沒有什麼珍貴的資料需要保護,只需簡單的驗證模式,因為C#語法不熟,所以POST中也不知道怎麼呼叫SQL欄位來作比對,麻煩高手們救救我/images/emoticon/emoticon02.gif

看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2019-06-04 00:34:10 檢舉
假如資料表有兩欄 A 跟 B , A 欄有設定不可重複(唯一), B 欄不限制.
而前端輸入兩欄資料, 如果剛好輸入的資料在資料表可以查到一筆, 表示之前有建過.
如果在資料表查不到資料, 表示 A 不存在或 B 錯誤(或兩者都有.)

:)
謝謝大大的回覆,但小弟才疏學淺,看不太懂大大表達什麼意思
dragonH iT邦超人 5 級 ‧ 2019-06-04 13:59:23 檢舉
好奇問一下

對C#不熟為什麼會挑C# ?
因為第一次接觸API,網路找的資料大部份都是C#教學,就簡單的使用C#來串接SQL的資料了
dragonH iT邦超人 5 級 ‧ 2019-06-04 14:12:40 檢舉
喔喔~

因為我覺得 asp.net 相對其他常見後端 (php, node.js)

不只要懂語言(c#)

還要懂IDE(Visual studio)

相對來說

會比較難入門
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Ks
iT邦新手 3 級 ‧ 2019-06-04 17:08:45
最佳解答

如果只是要簡單的login判斷id和password,應該就是這樣

/images/emoticon/emoticon06.gif

但是我不認為這能真正實現登入的作用,只是用來應付作業,可能還可以。

在大學期間還是把該學的學一學,現在不學,以後出來工作還是要還的
/images/emoticon/emoticon01.gif

[HttpPost]
public IActionResult Login([FromBody] LoginRequest loginRequest)
{
    using (apidataEntities entities = new apidataEntities())
    {
        var user = entities.Users.where(x => x.Id == loginRequest.Id && x.Password == loginRequest.Password).FirstOrDefault();
        if(user == null)
        {
            return Json(new { result = false });
        }
        else
        {
            return Json(new { result = true });
        }
    }
}

參考你的寫法與自己的修改,已解決本身的問題了。感謝

1
舜~
iT邦高手 1 級 ‧ 2019-06-04 08:23:32

謝謝大大的回覆,但是大大的這兩篇我有看過,和我的架構與問題不太一樣/images/emoticon/emoticon02.gif

我要發表回答

立即登入回答