本帖最后由 idoiknow 于 2013-04-01 15:57:55 编辑

解决方案 »

  1.   


    public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                 if (filterContext.HttpContext.Request.Cookies[".ASPXAUTH"]!=null)
                 {
                       //...自定义的一些权限判断
                 }
            }
    把你ActionFilter判定权限的地方改成上面的
      

  2.   


    这个肯定不行,第一次上传时HttpContext.Request.Cookies里面只有一个ASP.NET_SessionId,而没有.ASPXAUTH我只能在Request.Params[".ASPXAUTH"]获取到这个值,但我不可能用从这个".ASPXAUTH"就让它判断通过,因为这只是一个Request的参数,完全可以伪装的
      

  3.   

    问题解决了.尼玛,真是可以去撞一下墙了,在网上看到这个bug的解决方法时人家介绍的明明是在Global.cs重写
     protected void Application_BeginRequest()在Application_BeginRequest里面把Request.Params里面的".ASPXAUTH" 添加到Request.Cookie就好了
    , 后面AuthorizeFilter里的HttpContext.User.Identity.IsAuthenticated就自动为true了.我却以为MVC是没有 Application_BeginRequest()的,就跑到OnActionExecuting里面写,搞死都搞不出来.我去~,基础不过关,浪费半天时间 !