Day22 - Ajax 加上 Antiforgery Token (二)

Case01

与 Day21 重点差异的部份:

  • Controller 内 Action:

    加上 ValidateAntiForgeryToken Attribute

    // ...
    
    [HttpPost, Route("api/[controller]/[action]")]
    [ValidateAntiForgeryToken]
    public IActionResult PostCase01([FromBody]ViewModel vm)
    {
        return Ok(vm);
    }
    
    // ...
    
  • View :

    • 新增 Partial View _Antiforgery.cshtml

      @inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
      @functions{
          private string GetAntiXsrfRequestToken()
          {
              return Xsrf.GetAndStoreTokens(Context).RequestToken;
          }
      }
      
      <script>
          window.Antiforgery = {};
          Antiforgery.RequestVerificationToken = '@(GetAntiXsrfRequestToken())';
      </script>
      
    • Case01

      View 加上引用上述的 Partial View

      ...
      
      @section Scripts
      {
          <partial name="_Antiforgery"/>
          <script>
          const app = createApp({
              setup(){
      
      ...
      

      fetch 加上 Header RequestVerificationToken

      // ...
          fetch(post_url, {
              method: 'POST',
              headers: {
                  'Content-Type': 'application/json',
                  'RequestVerificationToken' : Antiforgery.RequestVerificationToken
              },
              body: JSON.stringify(vue_model),
          })
      
      // ...
      

参考资料:Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core

下一篇来看看把 Day17 范例改用 轻前端 Vue !


<<:  食谱资料库架构图

>>:  Day07 - 在 Next.js 中使用 pre-rendering (getStaticProps) — Part 1

30天程序语言研究

今天是30天程序语言研究的第二十三天,由於资料库开发的部分我是负责前端所以想说顺便多练习一下其他开发...

Day 26 - Palindrome Number

大家好,我是毛毛。ヾ(´∀ ˋ)ノ 废话不多说开始今天的解题Day~ 9. Palindrome N...

Day14 Vue directives(v-for)上

用v-for把阵列转成元素 一开始我们先把items的资料容给见出来 接下来呢我们用v-for=&q...

Raspberry pi 4b 到手

呼~ 等了好久,新玩具终於到了 凭藉着过人的智慧 我组装起来了,也帮镜头多了一个支架 然後就上电开机...

Day 14: Draft

GOOGLE公云使用案例 大纲 Introduction(Global view) How to c...