日期:2014-05-16  浏览次数:20618 次

关于MVC4页面权限,登录后自动跳转到之前受限页面的问题。

public class MemberValidationAttribute : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            //获取Cookies中的Login
            var memberValidation = System.Web.HttpContext.Current.Request.Cookies.Get("Login");
            //如果memberValidation为null  或者 memberValidation不等于Success
            if (memberValidation == null || memberValidation.Value != "Success")
            {
                //页面跳转到 登录页面
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Users", action = "Login"}));
                return;
            }
            //通过验证
            return;
        }
    }

我继承了AuthorizeAttribute类写了一个方法
并在必须登录才能访问的方法前都加了[MemberValidation]特性,这样未登录的用户点击部分功能的链接时就自动跳转到登录页了。
但是登录后怎样能自动跳转回之前受限的页面呢?我知道可以用get参数的方法携带url,但是要怎么写,在哪里写,不知道。
------解决方案--------------------
MVC的不会弄,帮顶!!!
------解决方案--------------------
 filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Users", action = "Login"}));
这边多传个参数(之前受限的页面的url) 登陆验证成功后获取下之前受限的页面的url 跳转过去就行了
------解决方案--------------------
引用:
我就是不知道怎么把受限制的那个url传到这个方法里。。。

string ReturnUrl=.........................................................  //自己获取下;
filterContext.Result = new RedirectToRouteResult(
    new RouteValueDictionary {
        { "action", "login" },
        { "controller", "Users" },
        { "ReturnUrl", ReturnUrl}
    }
);
------解决方案--------------------
var loginUrl=Url.RouteUrl(new { controller = "Users", action = "Login"});
var fromUrl= filterContext.RequestContext.HttpContext.Request.Url.ToString()//当前请求的url
var url=loginUrl+"?fromurl=" + HttpUtilit.Encode(fromurl)//对url进行编码

filterContext.RequestContext.HttpContext.Redi(url)//重定向

单词忘记了,自己补全吧~