【问题标题】:How to disable the URL in my application not to change manually如何在我的应用程序中禁用 URL 以不手动更改
【发布时间】:2012-01-18 18:44:02
【问题描述】:

我需要在我的应用程序中禁用 URL 才能手动更改。

例如:我有 index.aspx 页面。因为我有一个名为 Create 的按钮。当我单击时,我将转到 Create.aspx 页面。

基于一些验证,我正在禁用索引页面上的创建按钮。我能够做到这一点。

我的问题是当我手动更改要访问的 URL 时,有什么方法可以手动禁用 URL?

谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    在不知道禁用逻辑的详细信息或此 url 指向的位置的情况下,我会说这是自定义操作过滤器的工作。

    这是一个自定义验证过滤器的示例:

    public class CustomAuthorizeAttribute : AuthorizeAttribute
        {
    
            public override void OnAuthorization(AuthorizationContext filterContext)
            {
                //the base will just do the default behavior
    
                base.OnAuthorization(filterContext);
    
                //...if(same eval logic for button)==true
                filterContext.Result = new RedirectResult(<url>); //or RedirectToRoute(...
            }
        }
    

    然后在控制器的 action 方法中,应用属性...

    【讨论】:

      【解决方案2】:

      当用户可以查看创建页面时设置会话变量。

      Session["Create"]=true;
      

      当他们到达 create.aspx 时,检查该会话变量。如果是真的,就让他们进来,如果不是——把他们放到你的索引页上。

      【讨论】:

        【解决方案3】:

        当你点击索引页面上的“CreateButton”时设置一个会话变量。

        //Code for your button on your index page
        
            Session["allowaccesstoCreatePage"]=1;
        

        在您的 create.aspx 页面加载时检查此会话变量

        if(Session["allowaccesstoCreatePage"]==null)
        {
        Response.Redirect("index.aspx");
        }
        

        【讨论】:

          【解决方案4】:

          在 Create.aspx 的 Page_Load 事件中输入这个,或者在 Page_Init 事件中更好地输入

          if (Request.UrlReferrer == null) 
                  Response.Redirect("~/index.aspx");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-28
            • 1970-01-01
            • 2010-11-27
            • 1970-01-01
            • 2017-10-23
            • 2014-05-21
            相关资源
            最近更新 更多