gpt4 book ai didi

c# - 使用查询字符串在 MVC C# 中使用操作过滤器

转载 作者:可可西里 更新时间:2023-11-01 08:07:59 24 4
gpt4 key购买 nike

我使用类名 RightCheckerAttribute 来检查 MVC3 应用程序中的用户权限...所以RightCheckerAttribute类是这样的……

    public bool isAdmin { get; set; }

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContextBase context = filterContext.HttpContext;

bool result = Convert.ToBoolean(context.Request.QueryString["isAdmin"].ToString());

if (isAdmin != result)
{
RouteValueDictionary redirecttargetDictionary = new RouteValueDictionary();
redirecttargetDictionary.Add("action", "NoPermission");
redirecttargetDictionary.Add("controller","Singer");
filterContext.Result = new RedirectToRouteResult(redirecttargetDictionary);

}

//base.OnActionExecuting(filterContext);
}

所以在方法 i 中应用这个有 head as..

[RightChecker (isAdmin=true)]

我正在执行这个方法......

http://localhost:5576/Singer/DeleteSinger?isAdmin=true

问题是我传递的是真还是假……我得到的结果变量是假的……我得到:

Exception[Null Object references]...

最佳答案

您似乎没有在查询字符串中传递 isAdmin=falseisAdmin=true。这个对我有用。但是,您需要处理未传递查询字符串参数的情况。检查我的实现。如问题的评论部分所述,它不够安全,无法通过查询字符串传递它。

        public class RightChecker : ActionFilterAttribute
{
public bool IsAdmin;

public override void OnActionExecuting(ActionExecutingContext filterContext)
{

bool result = false;
if (filterContext.HttpContext.Request.QueryString["isAdmin"] != null)
{
bool.TryParse(filterContext.HttpContext.Request.QueryString["isAdmin"].ToString(), out result);
}

if (IsAdmin != result)
{
//your implementation
}
}
}

你的行动方式

    [RightChecker(IsAdmin=true)]
public ActionResult AttCheck()
{
return View();
}

关于c# - 使用查询字符串在 MVC C# 中使用操作过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594189/

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