我想在我的ASP.net MVC项目中使用基于声明的身份验证构建我自己的身份验证过程。我希望能够使用Authorize属性(包括角色),例如[Authorize(Roles="admin")]
和[Authorize(Roles="Frontenduser")]
,因为我将拥有多种类型的用户。
我不想使用ASP.net身份,因为它比我需要的要多得多。我还需要为不同类型的用户存储完全不同的数据。
我知道我可以继承AuthorizeAttribute类,但我不确定它是如何与声明一起使用的。首先,任何人都可以推荐使用基于声明的身份验证的良好程序包,其次,如何停止使用ASP.net身份的Authorize属性并使其与我的基于声明的自定义身份验证一起使用? 我已经看过网络上的其他问题和其他解决方案,但我找不到合适的解释或解决方案。
答案 0 :(得分:0)
您可以使用基于策略的授权。身份是身份验证,与授权不同。为此,您可以在启动类中制定策略。这是我在配置服务中的一个例子。如果您不需要身份,则可以使用JWT承载令牌并制定策略。 从nuget获取这些包:
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
public void ConfigureServices(IServiceCollection services)
{
//new policy makes [Authorize (Policy = "Your custom Policy")] availible by claims This is what you put on controllers
services.AddAuthorization((options) => {
options.AddPolicy("Your custom Policy", policybuilder =>
{
policybuilder.RequireAuthenticatedUser();
policybuilder.RequireClaim("role", "PayingUserExampleProperty");
});
});
在您的配置
中添加
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
...
好好读到这个:
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies