i 试图在我的微笑网页应用上添加对《维也纳条约法公约》的认证。 我希望用户进入电子邮件地址,如果电子邮件在我的数据库中存在的话,则不进行检查。 如果该地址储存在数据库中,则希望在一届会议上打字并储存。
i 没有发现任何关于如何用平流/管/内联网执行类似的东西。 因此,你们有某种想法,可以如何用raz页确定这一点?
我试图追随一些教导,但没有任何事实。
页: 1 我的方案。
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
o.RequireHttpsMetadata = false;
o.SaveToken = true;
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtSettings:Key"])),
ValidateIssuer = true,
ValidIssuer = configuration["JwtSettings:Issuer"],
ValidateAudience = false,
ValidateLifetime = true,
};
});
services.AddAuthorization();
2. 我的后遗忘了原木,紧随此而去。 在座标中,我想在一届会议上或座标上储存脚印。
public async Task<IActionResult> OnPost()
{
await _loginRepository.CreateToken(Email);
//TODO store token here
return RedirectToPage("/Picture/Index");
}
在对电子邮件是否存在进行核对后,即可产生一个信号,然后改用<代码>保护的网页[Autroize(Roles = “Admin”)]。
我的象征性一代
public async Task<bool> CreateToken(string email, CancellationToken cancellationToken = default) { var journalists = await _zentralContext.v_PressInfo_Journalisten.Select(s => s.Email).ToListAsync(); if (journalists.Contains(email)) { var journalist = await _zentralContext.v_PressInfo_Journalisten.Where(w => w.Email == email).FirstAsync(); var token = CreateToken(email); //Store Token here?? return true; } else { return false; } } private string CreateToken(string email) { var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("TheSecretKeyNeedsToBePrettyLongSoWeNeedToAddSomeCharsHere")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var claims = new[] { new Claim(ClaimTypes.Email, email), new Claim(ClaimTypes.Role, "Admin") }; var token = new JwtSecurityToken( issuer: "Presseinfo Extern", claims: claims, expires: DateTime.Now.AddDays(1), signingCredentials: creds); return new JwtSecurityTokenHandler().WriteToken(token); }