gpt4 book ai didi

c# - Application_BeginRequest 用法

转载 作者:太空狗 更新时间:2023-10-29 21:26:39 34 4
gpt4 key购买 nike

我们正在 ASP.NET MVC 项目中尝试一些登录操作。我们的目标是:“如果用户的 IP 不是来 self 们的 Intranet,则将他/她重定向到登录页面。否则,只需转到我们的索引页面。我们写了一些代码,但我们在循环中。

全局.ASAX

protected void Application_BeginRequest(object sender, EventArgs e)
{
var request = ((System.Web.HttpApplication) sender).Request;

string ip1 = request.UserHostAddress;
string shortLocalIP;
if (ip1 != null && ip1.Contains("."))
{
string[] ipValues = ip1.Split('.');
shortLocalIP = ipValues[0] +"."+ipValues[1];
}
else
{
shortLocalIP = "192.168";
}

//var ip2 = request.ServerVariables["LOCAL_ADDR"];
//var ip3 = request.ServerVariables["SERVER_ADDR"];

if (shortLocalIP != LOCALIP)
{
if ("/Login/User".Equals(request.RawUrl, StringComparison.InvariantCultureIgnoreCase))
{
return;
}

Response.Clear();
Response.Redirect("/Login/User");
Response.End();
}
}

登录 Controller

 public class LoginController : Controller
{
// GET: Login
public ActionResult User()
{
return View();
}

public ActionResult checkAuthentication(FormCollection collection)
{
bool isAuthenticated = new LdapServiceManager().isAuthenticated(collection);
if (isAuthenticated)
{
Response.Redirect("Home/Index");
}
else
{
Response.Redirect("/Login/User");
}
return null;
}
}

登录CSHTML

 <form class="login-form" action="/Login/checkAuthentication" method="post" novalidate="novalidate">

每当我们按下某个按钮或其他东西时,Application_BeginRequest 就会触发。但我们只希望在开始时进行这些操作。谢谢...

我们应该在 GLOBAL.ASAX 中使用 SESSION START 吗??

最佳答案

您可以为此使用ActionFilter。为自定义过滤器创建一个类,像这样 -

public class IntranetAction : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool isIPAddressValid = false;//TODO: Check the IP validity here
if (isIPAddressValid)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = "Account", //TODO - Edit as per you controller
action = "Login" //and Action
}));
}

base.OnActionExecuting(filterContext);
}
}

然后简单地在你的 Controller ActionMethod 上使用它,例如 -

    [IntranetAction]
public ActionResult Index()
{
return View();
}

建议阅读一篇好文章以开始使用自定义过滤器 - http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

关于c# - Application_BeginRequest 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160220/

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