1. appsetting.json file
"ConnectionStrings": {
"DefaultConnection":"Server=ZIAUL; Database=AkijBashir; Trusted_Connection=True;MultipleActiveResultSets=true"
},
"AllowedHosts": "*",
"JWT": {
"ValidAudience": "http://localhost:4200",
"ValidIssuer": "http://localhost:61955",
"Secret": "ByYM000OLlMQG6VVVp1OH7Xzyr7gHuw1qvUC5dcGt3SNM"
}
2. program.cs file
builder.Services.AddAuthentication(cfg => {
cfg.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
cfg.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
cfg.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x => {
x.RequireHttpsMetadata = false;
x.SaveToken = false;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8
.GetBytes(builder.Configuration["Jwt:Secret"])
),
ValidateIssuer = false,
ValidateAudience = false,
ClockSkew = TimeSpan.Zero
};
});
app.UseCors(option =>
{
option.AllowAnyOrigin();
option.AllowAnyMethod();
option.AllowAnyHeader();
});
3. controller
private readonly DapperContext _dapperContext;
private readonly IConfiguration _configuration;
public AccountService(DapperContext dapperContext, IConfiguration configuration)
{
_dapperContext = dapperContext;
_configuration = configuration;
}
public async Task<object> UserLogin(UserLogin request)
{
if (string.IsNullOrEmpty(request.ContactNo))
{
return Result.Failure(new List<string> { "Contact No is required" });
}
if (string.IsNullOrEmpty(request.Password))
{
return Result.Failure(new List<string> { "Password No is required" });
}
using (var context = _dapperContext.CreateConnection())
{
string query = "SELECT * FROM Users where Mobile = '" + request.ContactNo + "' ";
var userData = await context.QueryFirstOrDefaultAsync<Users>(query);
if (userData != null)
{
var hasPass = Helper.HashPassword(request.Password, userData.PasswordKey);
if (userData.PasswordValue == hasPass)
{
var user = new UsersViewModel
{
Id = userData.Id,
Email = userData.Email,
Name = userData.Name,
ClientId = userData.ClientId,
};
var token = GenerateJWTToken(user);
return new
{
succeed = true,
token = token,
name = userData.Name
};
}
else
{
return Result.Failure(new List<string> { "UserId and Password Dose Not Match" });
}
}
else
{
return Result.Failure(new List<string> { "User Not Found" });
}
}
}
public string GenerateJWTToken(UsersViewModel user)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Email, user.ClientId.ToString()),
};
var jwtToken = new JwtSecurityToken(
claims: claims,
notBefore: DateTime.UtcNow,
expires: DateTime.UtcNow.AddHours(3),
signingCredentials: new SigningCredentials
(
new SymmetricSecurityKey( Encoding.UTF8.GetBytes(_configuration["Jwt:Secret"])),
SecurityAlgorithms.HmacSha256Signature)
);
return new JwtSecurityTokenHandler().WriteToken(jwtToken);
}
0 Comments
If you have any questions, please let me know