gpt4 book ai didi

c# - 如何在 C# 中重定向

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:37 24 4
gpt4 key购买 nike

在使用 C# 的 MVC 3 中,我想重定向某些未验证的方法。但是,这似乎不起作用:

    private ActionResult m_VerifyLogin()
{
if (Session["isLogged"] == null || (int)Session["isLogged"] != 1)
{
return RedirectToAction("Index", "Home");
}

return View();
}

有人知道我能做什么吗?即使我创建一个 ActionFilterAttribute,我也希望它非常简单!

-- 编辑--

谢谢大家的回答。我们尝试了您提出的一些问题,然后在测试后得出了这个结论:

自定义 ActionFilterAttribute:

public class IsLoggedAttribute : ActionFilterAttribute
{

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["isLogged"] == null || (int) filterContext.HttpContext.Session["isLogged"] != 1)
{
filterContext.HttpContext.Response.RedirectToRoute(new { controller = "Home" });
}

base.OnActionExecuting(filterContext);
}

}

我可以在路由方法上方抛出 [IsLogged]。

最佳答案

使您的操作方法公开。您的代码看起来不错,因为要重定向到另一个操作/ Controller ,操作方法可以通过 Controller 基类的 RedirectToAction 方法返回。

public ActionResult m_VerifyLogin()
{
if (Session["isLogged"] != null || (int)Session["isLogged"] != 1)
{
return RedirectToAction("Index", "Home");
}
return View();
}

您的if 语句也有点奇怪。您检查 session 中的值是否为 null,并使用 OR 逻辑运算符将其强制转换(可能为 null)以使用值进行测试。你可以尝试做这样的事情:

//If session value is not null then try to cast to int and check if it is not 1.
if (Session["isLogged"] != null || (int)Session["isLogged"] != 1)

如果 Home Controller 中的 Index 操作应用了 ActionFilterAttribute 并且当前用户无效,您将重定向到在表单例份验证配置上定义的登录页面。您还可以使用具有更好名称的操作方法名称来获得友好的 URL,例如 VerifyLogin

public ActionResult VerifyLogin()
{
if (Session["isLogged"] != null || (int)Session["isLogged"] != 1)
{
return RedirectToAction("Index", "Home");
}
return View();
}

关于c# - 如何在 C# 中重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405618/

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