gpt4 book ai didi

c# - 跳过基于另一个过滤器 asp .net 的过滤器执行

转载 作者:行者123 更新时间:2023-11-30 17:36:14 25 4
gpt4 key购买 nike

我有一个被授权的操作如下:

[Authorize(Roles = "Admin, Agency, Subscribed, Normal")]
public ActionResult LocationProfile()
{}

我需要的是添加另一个在授权过滤器之前执行的过滤器,如果结果为真,则不执行授权属性并继续直接执行我的操作(LocationProfile())

有什么办法可以完成这个任务

最佳答案

您将不得不滚动您的 own version of the Authorize attribute内置了该功能。包含在上面链接的 C# 角落帖子中:

public class CustomAuthorizeAttribute : AuthorizeAttribute  
{
Entities context = new Entities(); // my entity
private readonly string[] allowedroles;
public CustomAuthorizeAttribute(params string[] roles)
{
this.allowedroles = roles;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool authorize = false;
foreach (var role in allowedroles)
{
var user = context.AppUser.Where(m => m.UserID == GetUser.CurrentUser/* getting user form current context */ && m.Role == role &&
m.IsActive == true); // checking active users with allowed roles.
if (user.Count() > 0)
{
authorize = true; /* return true if Entity has current user(active) with specific role */
}
}
return authorize;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}

在 AuthorizeCore 方法中,您需要添加支票以说明所描述的情况。

关于c# - 跳过基于另一个过滤器 asp .net 的过滤器执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com