Skip to main content

Posts

Showing posts with the label Asp.net core 3.0

Refresh Token For JWT(JSON Web Token) On Authenticating .Net Core Application

In  Part-1 .Net Core Authentication Using JWT(JSON Web Token) , we have discussed step by step implementation about generating authentication token using JWT(JSON Web Token). Now we will discuss the generation of refresh token and using refresh token we will fetch authentication token again on its expiration. This article will be the continuation of  Part - 1 . RandomNumberGenerator Instance: System.Security.Cryptography.RandomNumberGenerator will be used to generate a random number which will be used as a refresh token. Note: It is not a mandatory approach to use 'System.Security.Cryptography.RandomNumberGenerator'. You can use your own some secured technique to generate a unique token string or you can use GUID. Generate Refresh Token: Let's add a private method that returns a random unique key that we can use as a refresh token. Logic/AccountLogic.cs: private string GetRefreshToken() { var key = new Byte[32]; using (var refreshTokenGenerator = RandomNumberGenerator.C

Configuration And Working Mechanism Of JSON Files On .Net Core Application Starts

.Net Core application JSON file configuration technique has come into picture by replacing traditional way like Web.Config file approach. By default application loads "appSettings.json" file on startup. If we have defined environment variable then application also loads environmental specific json files like "appSettings.Development.json"(for environment variable is Development), "appSettings.Stage.json"(for environment variable is Stage), "appSettings.Production.json"(for environment variable is Production) along with the "appSetting.json". Create A Sample .Net Core Application: Now for better understanding let's walk through with a sample .Net Core Web API application. The application can be created either by using Visual Studio 2019(VS Editor supports .Net Core Version 3.0plus) or  visual Studio Code App Loads appSettings.json And appSettings.{Environmental_Variable}.json By Default: On application start, appSettings.json and ap

.Net Core HttpClient JSON Extension Methods Using System.Net.Http.Json Package

.Net Core 3.0 onwards Microsoft brought up a new package called System.Net.Http.Json. This new package provides JSON extension methods for HttpClient. These JSON extension methods will have a prebuild mechanism for serializing or deserializing response data or payload of HttpClient call. System.Net.Http.Json extension methods that are provided to HttpClient, few of them are mentioned below. GetFromJsonAsync PostAsJsonAsync PutAsJsonAsync ReadFromJsonAsync In this article, we understand System.Net.Http.Json package by implementing the HttpClient samples by with and without JSON extension methods and compare them. Create A .Net Core Web API Sample Application: Let's create a .Net Core sample Web API application, from this application we will consume another Web API by implementing HttpClient calls. We can create a Web API sample application using IDE like Visual Studio 2019(Supports .Net Core 3.0 plus) or  Visual Studio Code . Create A Typed Client: In .Net Core using the Http

A Brief Tour On .NET Core View Components

View Components are small pieces or chunks of a reusable block of code.   A View Component is made of the class(Component Class) and a view that looks like Controller. But View Component can't be triggered or initialized by a user request like MVC Controller, it will be invoked from code manually. A View or Razor can be completely or partially build using View Components. Create A .Net Core MVC Sample: Let's understand View Components by doing simple examples on it. So let's create a sample .Net Core MVC application(another choice to use like Razor Pages sample application). Use either Visual Studio 2019(IDE supports .Net Core 3.0 plus version) or Visual Studio Code . Implement The View Component Class: View Component Class is the logic container where we can prepare data that need to be bind to view on the render. Create a folder like ViewComponents where will create all our application components. A POCO class that inherits Microsoft.AspNetCore.Mvc.ViewComponent can be

Dynamic Data Binding Of Email Body Template Using .NET Core Razor Library

In general, there are two most common approaches to build an email template like: System.Text.StringBuilder using this we generate template by appending n-number of strings. This approach is hard to maintain, can not do code debug, etc. Another approach is like storing the entire email template in the database , where the template contains a placeholder to be replaced with dynamic data. Compare to the StringBuilder approach, the preferring database will make code Maintainance easy. But in this approach also debug code is hard. What Kind Of Solution Razor Library Provides?: Razor Library is a .Net Standard Library that has an inbuild razor engine where we can create Razor Page, MVC Views. It works as similar to MVC Views or Razor Pages where generate pages with Model binding. So by using the Razor Library, we need to create a custom provider Razor Engine where we can fetch the Html of the page render using Model binding. So in this approach, we create Mvc View or Razor Page (.cshtml

.Net Core Protection Using Antiforgery Token

AntiForgeryToken is a security token generated by the .Net Core web application, which is used to validate a post request to guard against Cross-Site Request. Automatic AntiforgeryToken Generation: AntiforgeryToken used for validating the post request. So if we access an MVC or RazorPages view which contains the form element with an attribute  'method="post"' then the view gets rendered with an automatic generated AntiforgertyToken value, which gets injected into the form as hidden input field. Let's test automatic AntiforgeryToken generation as follow: Controllers/TestController.cs: using Microsoft.AspNetCore.Mvc; namespace AntiforgeryTokeSample.Mvc.Controllers { public class TestController : Controller { public IActionResult Index() { return View(); } } } Let's create a view for the above index action method as follows: Views/Test/Index.cshtml: <form method="POST"> <button type="sub