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

原文: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)));
            }

        }
    }
时间: 2025-01-01 23:40:19

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

Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码

本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理 1.用户登录 验证用户是否登录成功步骤直接忽略,用户登录成功后怎么保存当前用户登录信息(session,cookie),本文介绍的是身份验证(其实就是基于cookie)的,下面看看代码. 引入命名空间 using System.Web.Security; Users ModelUser = new Users() { ID = 10000, Nam

jwt的ASP.NET MVC 身份验证

Json Web Token(jwt)      一种不错的身份验证及授权方案,与 Session 相反,Jwt 将用户信息存放在 Token 的 payload 字段保存在客户端,通过 RSA 加密的方式,保证数据不会被篡改,验证数据有效性. 详细请参考jwt.io. 我现在还是一枚小白,希望能帮助更多的小白成长.因此文章都是一些比较简单的使用过程,文字讲解较少,怕误人子弟. 小白成长为大牛过程:知其然而不知其所引然 再知其然而知其所引然 1. 开发环境如下 vs2017+ASP.NET MV

Asp.Net mvc筛选器中返回信息中断操作

在mvc中,使用response.end()或Response.Redirect("url"); 是无法阻止请求继续往下执行的.如果在action中,可以我们可以使用return 进行中断. 如果在筛选器中如何中断呢?其实我们只用重新复制上下文的result对象,就可以可. sonResult result=new JsonResult(); result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; result.Data =

ASP.NET Identity 身份验证和基于角色的授权

ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Identity 进行身份验证(Authentication)以及联合ASP.NET MVC 基于角色的授权

ASP.net的身份验证方式有哪些?

[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问

ASP.NET MVC局部验证及相关问题

在上一篇“asp.net mvc常用的数据注解和验证以及entity framework数据映射”话题中,有的博友提到 ‘“同一个实体在3-4个地方会发生修改,每个修改需要验证的方式都不一样,后端就不能写固定验证.” 此博友的言论我是很赞同的,在基于asp.net mvc上,我有对应的策略,并且,你只需几行代码,就解决了所有的事情. 还是举上次的Model,如下: [Table("AdminInfo")] public partial class AdminInfo { [Key] [

ASP.NET MVC Model验证(四)

ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而ModelValidator类型则是Model验证执行类型,在下面的示例中会使用Model验证提供程序结合Model验证执行类型来执行Model验证,就是使用上个篇幅中所讲的实现个Model绑定器继承自DefaultModelBinder类型,在自定义Model绑定器中使用ModelValidator类型

ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

原文:ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.

ASP.NET --Form身份验证

本文收集自----MSDN 一:Forms 身份验证流程 在 Forms 身份验证方案中,应用程序直接从用户那里收集名字和密码等凭据,并自己判断这些信息的真实性.应用程序不使用 IIS 身份验证,但 IIS 身份验证设置可以影响 Forms 身份验证.作为一项原则,当您使用 Forms 身份验证时,请在 IIS 中启用匿名访问.否则,如果用户未通过 IIS 身份验证,他们甚至无法访问应用程序以便向 Forms 身份验证提供用户名和密码. 此方案中的数据流如下图所示. Forms 身份验证 此图说