zoukankan      html  css  js  c++  java
  • mvc3 action验证失败后的自定义处理


    我们知道,要在一个action前加上权限的限制就要特性比如拥有admin权限的用户就加上

    [Authorize(Roles="admin")]

    给每个登陆用户分配权限则是要在Global.asax.cs中加上这两个函数

            public MvcApplication()
            {
                AuthorizeRequest += new EventHandler(MvcApplication_AuthorizeRequest);
            }
    
            void MvcApplication_AuthorizeRequest(object sender, EventArgs e)
            {
                IIdentity id = Context.User.Identity;
                if (id.IsAuthenticated)
                {
                    var roles = new string[] { "admin", "reg" };
                    //string[] rolelist = new string[] { roles.Name };
                    Context.User = new GenericPrincipal(id, roles);
                }
            }

    当权限验证失败时,mvc默认跳转到登陆页面,如果我们要改变这一设置就要重载Attribute 类:System.Web.Mvc.AuthorizeAttribute的HandleUnauthorizedRequest函数

    比如发生错误的时候跳转到新浪首页:

        public class MyAuth : System.Web.Mvc.AuthorizeAttribute
        {
            protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
            {
                //base.HandleUnauthorizedRequest(filterContext);
                filterContext.HttpContext.Response.Redirect("http://www.sina.com");
            }
        }
    别忘了在action前面加上自己定义的权限特性:

    [MyAuth(Roles = "admin")]


  • 相关阅读:
    洛谷P2602 [ZJOI2010]数字计数 题解
    数位DP模板
    The Meaningless Game 思维题
    CF55D Beautiful numbers 数位DP
    NOIP 2016 洛谷 P2827 蚯蚓 题解
    弹性碰撞问题:Ants+Linear world
    BZOJ1294 洛谷P2566 状态压缩DP 围豆豆
    朋友HDU
    树的深度———树形DP
    CF1292C Xenon's Attack on the Gangs 题解
  • 原文地址:https://www.cnblogs.com/rav009/p/5131189.html
Copyright © 2011-2022 走看看