首页 > Web开发 > 详细

转 asp.net mvc 身份验证中返回绝对路径的ReturnUrl

时间:2015-02-20 20:50:59      阅读:510      评论:0      收藏:0      [点我收藏+]

原文:http://www.cnblogs.com/hyl8218/archive/2011/11/22/2259116.html

从HttpUnauthorizedResult的源码可以看出,HttpUnauthorizedResult的执行很简单,就是设置当前的 HttpContext.Response的状态码为401,这样就回激活authentication module 执行它默认的 unauthorized handler,也就是跳转到登陆页面的,但是默认的跳转ReturnURL 参数的地址是相对的,这在不同域名下实现单点登录时显然是不能满足我的需要的。

解决的办法就是继承AuthorizeAttribute这个特性,重写OnAuthorization方法

public class MyAbsoluteUrlAuthorizeAttribute : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
            if (filterContext.Result is HttpUnauthorizedResult)
            {
                filterContext.Result = new RedirectResult(
                    string.Concat(FormsAuthentication.LoginUrl, 
                                 "?ReturnUrl=",
                                 filterContext.HttpContext.Server.UrlEncode(filterContext.HttpContext.Request.Url.AbsoluteUri)));
            }
           
        }
    }

 

转 asp.net mvc 身份验证中返回绝对路径的ReturnUrl

原文:http://www.cnblogs.com/ly7454/p/4296693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!