如何在Asp.net MVC中使用Identity 2.0实现基于声明的身份验证

时间:2017-05-02 16:55:40

标签: c# asp.net asp.net-mvc identity claims-based-identity

我正在开发一个使用身份2来验证和授权用户的Asp.net Mvc应用程序,但似乎我需要比基于角色更多的功能,所以我想改变我的方法并使用基于声明的方法来创建申请。

更新:考虑我想为特定用户设置访问特定操作的访问权限。

但问题是没有什么可学的,我的意思是我知道什么是声称,但我不知道如何实现它并创建用户和事物。

我想知道为什么没有什么可以学习如何在那里实现声明!这就是我问这个问题的原因。

我需要像准备好的项目或分步教程。 有什么可以教导如何处理索赔吗?

1 个答案:

答案 0 :(得分:3)

请查看Asp.Net Core中的政策。

在Policiy中,你可以使用Claims + Roles +你想要的任何东西。所有这些都在内置的asp.net中。

这是官方参考:

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies

如果您不使用.Net Core,则需要使用此授权过滤器等自定义实现。

public class ClaimsAuthorizeAttribute : AuthorizeAttribute
{
    private string claimType;
    private string claimValue;
    public ClaimsAuthorizeAttribute(string type, string value)
    {
        this.claimType = type;
        this.claimValue = value;
    }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        var user = filterContext.HttpContext.User as ClaimsPrincipal;
        if (user != null && user.HasClaim(claimType, claimValue))
        {
            base.OnAuthorization(filterContext);
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

MVC5 Claims version of the Authorize attribute

中提取的代码