我正在开发一个使用身份2来验证和授权用户的Asp.net Mvc应用程序,但似乎我需要比基于角色更多的功能,所以我想改变我的方法并使用基于声明的方法来创建申请。
更新:考虑我想为特定用户设置访问特定操作的访问权限。
但问题是没有什么可学的,我的意思是我知道什么是声称,但我不知道如何实现它并创建用户和事物。
我想知道为什么没有什么可以学习如何在那里实现声明!这就是我问这个问题的原因。
我需要像准备好的项目或分步教程。 有什么可以教导如何处理索赔吗?
答案 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);
}
}
}
中提取的代码