关于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 跳转过去就行了
------解决方案--------------------
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)//重定向
单词忘记了,自己补全吧~