码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-02-20 20:51:53      阅读:166      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!