Question: . Net Rest api authorization { ConnectionStrings: { DefaultConnection: Data Source = } , Jwt : { Key: ,
Net Rest api authorization
"ConnectionStrings":
"DefaultConnection": "Data Source
Jwt:
"Key":
"Issuer": "HotelReservation",
"Audience": "HotelUsers"
"Logging":
"LogLevel":
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
"AllowedHosts":
using Hotel.Data;
using Hotel.Model;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using RouteAttribute Microsoft.AspNetCore.MvcRouteAttribute;
namespace Hotel.Controllers
Routeapicontroller
ApiController
public class UserController : ControllerBase
private readonly UserManager userManager;
private readonly SignInManager signInManager;
private readonly IConfiguration configuration;
public UserControllerUserManager userManager, SignInManager signInManager, IConfiguration configuration
userManager userManager;
signInManager signInManager;
configuration configuration;
HttpPostregister
public async Task RegisterFromBody UserDTO model
var user new User UserName model.UserName, Email model.Email ;
var result await userManager.CreateAsyncuser model.Password;
if resultSucceeded
return Ok;
return BadRequestresultErrors;
HttpPostlogin
public async Task LoginFromBody UserDTO model
var result await signInManager.PasswordSignInAsyncmodelUserName, model.Password, false, false;
if resultSucceeded
var user await userManager.FindByNameAsyncmodelUserName;
var token GenerateJwtTokenuser;
return Oknew token ;
return Unauthorized;
private string GenerateJwtTokenUser user
var claims new
new ClaimJwtRegisteredClaimNamesSub, user.UserName
new ClaimJwtRegisteredClaimNamesJti, Guid.NewGuidToString
new ClaimClaimTypesNameIdentifier, user.Id
;
var key new SymmetricSecurityKeyEncodingUTFGetBytesconfigurationJwt:Key";
var creds new SigningCredentialskey SecurityAlgorithms.HmacSha;
var token new JwtSecurityToken
issuer: configurationJwt:Issuer"
audience: configurationJwt:Audience"
claims: claims,
expires: DateTime.Now.AddMinutes
signingCredentials: creds;
return new JwtSecurityTokenHandlerWriteTokentoken;
using Hotel.Data;
using Hotel.Model;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using Microsoft.OpenApi.Models;
using System.Reflection;
using System.Text;
var builder WebApplication.CreateBuilderargs;
Add services to the container.
builder.Services.AddDbContextoption
option.UseSqlServerbuilderConfiguration.GetConnectionStringDefaultConnection;
;
builder.Services.AddIdentity
AddEntityFrameworkStores
AddDefaultTokenProviders;
var jwtKey builder.ConfigurationJwt:Key";
var jwtIssuer builder.ConfigurationJwt:Issuer";
var jwtAudience builder.ConfigurationJwt:Audience";
if stringIsNullOrEmptyjwtKey string.IsNullOrEmptyjwtIssuer string.IsNullOrEmptyjwtAudience
throw new ArgumentExceptionJWT settings are not configured properly in appsettings.json";
var key new SymmetricSecurityKeyEncodingUTFGetBytesjwtKey;
builder.Services.AddAuthenticationoptions
options.DefaultAuthenticateScheme JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme JwtBearerDefaults.AuthenticationScheme;
AddJwtBeareroptions
options.TokenValidationParameters new TokenValidationParameters
ValidateIssuer true,
ValidateAudience true,
ValidateLifetime true,
ValidateIssuerSigningKey true,
ValidIssuer jwtIssuer,
ValidAudience jwtAudience,
IssuerSigningKey key
;
;
builder.Services.AddControllers
AddNewtonsoftJsonoptions
options.SerializerSettings.ReferenceLoopHandling Newtonsoft.Json.ReferenceLoopHandling.Ignore;
; swagger error
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
