我已经在WebAPI中成功设置了JWT身份验证/授权,但有一个问题:我可以创建一个新的用户帐户,生成它的JWT令牌,然后在令牌仍然有效时删除该帐户。在授权之前,我应该如何以及在哪里检查与令牌关联的用户是否确实存在?
这是我设置JWT的代码(Startup.cs):
var secretKey = Configuration.GetValue<string>("SecretKey");
var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "localhost",
ValidAudience = "localhost",
IssuerSigningKey = symmetricKey
};
});
我在我的控制器上使用[Authorize]
属性,用户ID在JWT令牌中。
提前感谢!
您还可以在以下事件中验证用户:
options.Events = new JwtBearerEvents()
{
OnTokenValidated = context =>
{
//get userid if type is "userid"
var userid = context.Principal.Claims.Where(x => x.Type == "userid").FirstOrDefault().Value;
if (true )
{
context.Fail("invaild token");
}
return Task.CompletedTask;
},
};
如果要在该事件中检查数据库,可以使用依赖项注入来获取db上下文,如:
var dbcontext = context.HttpContext.RequestServices.GetRequiredService<ApplicationDbContext>();
我正在尝试评估身份验证用户的角色数组。100和102是我要检查的角色值。如果身份验证用户具有其中之一,则返回。这可能吗?以下是我目前的代码: 我不希望一次重复检查一个,因为处理代码太多,会使文件过长。
我正在研究使用JWT身份验证的Spring Security实现。我不确定如何检查用户角色并在方法级别获得经过身份验证的用户。我在网上看到这个例子: 我需要从JWT令牌中提取用户类型吗?还有其他方法可以实现吗?在我看来,仅使用是不完整的。 看起来这段代码是用来获得用户如果使用会话类型,我得到NPE。你知道对于JWT我如何才能成为用户吗? Github完整来源:https://Github.com/
在loadByUserName()方法中,我通过邮件找到用户。目前,我的用户类使用isEnabled()方法实现UserDetails,以检查用户是否已启用。然而,在身份验证之前会检查这个启用标志,这样任何人都可以发现另一个用户的帐户是否启用,无论使用什么密码。有没有办法在身份验证后检查启用标志? 我的用户类: My loadUserByUsername()方法: 我更改了默认消息,以防凭据不良或
于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,
在JSP下,在JDBC连接成功之后,并且ResultSet正在显示一些价值。 如何检查用户在文本字段(使用HTML表单)中输入的登录值(用户名和密码)是否正确并存在于数据库中? 编辑:无论是否输入凭据,它都显示不正确的用户名和密码:
我已经实现了keycloak用户存储SPI流。它针对外部源进行身份验证。Keycloak是用外部存储属性更新的,如果它在getUserByUsername方法中更新,它就可以工作。 我正在isValid方法中验证userValidation,并更新UserModel和LocalHashMap中的userAttributes。 从日志中,我看到UserStoreProviderFactory创建了两