首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单元测试ASP.Net MVC Authorize属性以验证重定向到登录页面

作为一个云计算领域的专家,我可以帮助您解答关于云计算、IT互联网领域的问题。

针对您的问题,单元测试ASP.Net MVC Authorize属性以验证重定向到登录页面,这是一个关于ASP.Net MVC授权的问题。在ASP.Net MVC中,使用Authorize属性可以对控制器或操作方法进行授权,以限制未经授权的用户访问。

在单元测试中,可以使用MVC测试框架来测试Authorize属性是否正确地重定向到登录页面。例如,可以使用以下代码来测试Authorize属性:

代码语言:csharp
复制
[TestMethod]
public void AuthorizeAttribute_Redirects_To_Login_Page_If_User_Is_Not_Authenticated()
{
    // Arrange
    var controller = new HomeController();
    var context = new ControllerContext();
    context.HttpContext = new MockHttpContext();
    controller.ControllerContext = context;

    // Act
    var result = controller.Index() as RedirectToRouteResult;

    // Assert
    Assert.IsNotNull(result);
    Assert.AreEqual("Login", result.RouteValues["action"]);
    Assert.AreEqual("Account", result.RouteValues["controller"]);
}

在这个测试方法中,首先创建了一个HomeController实例,并设置了一个MockHttpContext,以模拟一个未经授权的用户。然后,调用了HomeController的Index方法,并检查了返回的RedirectToRouteResult是否指向了登录页面。

总之,单元测试ASP.Net MVC Authorize属性可以帮助您确保应用程序的安全性,并确保未经授权的用户被正确地重定向到登录页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IdentityServer4学习及简单使用

身份验证服务:官方认证的OpenID Connect实现 单点登录/注销(SSO) 访问受控的API : 为不同的客户提供访问API的令牌,比如:MVC网站、SPA、Mobile APP等 ...等等...新建一个ASP.NET Core MVC项目:MVCClient 2.为指定方法添加[Authorize]特性 我们为HomeController下的Privacy方法上添加Authorize特性      ...,直接访问Privacy,会报错 而我们希望的效果是:当用户第一次点击Privacy,页面重定向验证服务(IdentityServerDemo),当用户登录验证授权后,再重定向该网站。...此后一定时间范围内的第二次,第三次点击,都不需要再重定向验证服务,而是直接读取保存的token. 3....RedirectUris是指登录成功以后需要重定向的地址(即重定向MvcClient中的地址), 而PostLogoutRedirectUris是指登出之后需要重定向的地址。

1.4K20

ASP.NET Core 应用中使用 Cookie 进行身份认证

Core MVC 应用,这里 VS 创建的默认项目为例,对于一个 MVC or Web API 应用,要求用户必须登录之后才能进行访问,最简单的方式,在需要认证的 Controller 或 Action...,去告诉 Cookie 授权策略这里对应的页面在何处,同时,因为身份验证 Cookie 的默认过期时间会持续关闭浏览器为止,也就是说,只要用户不点击退出按钮并且不关闭浏览器,用户会一直处于已经登录的状态...; }); } } 此时,当我们再次访问系统时,因为没有经过认证,自动触发了重定向系统登录页面的操作,而这里重定向跳转的页面就是上文代码中配置的 LoginPath 的属性值...2.3、登录、登出实现 当认证策略配置完成之后,就可以基于选择的策略来进行登录功能的实现。这里的登录页面上的按钮,模拟了一个登录表单提交,当点击之后会触发系统的认证逻辑,实现代码如下所示。...Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文这篇博客的解释来说明 Claim:被验证主体特征的一种表述,比如:登录用户名是...

1.3K40
  • Angularjs 通过asp.net web api认证登录

    Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认证登录...环境 Vs.net 2013 Asp.net mvc + web api Individual user accounts Angularjs Underscore 新建一个asp.net mvc+...注册一个test用户用于测试 新建一个用于登录验证用户名密码的webapi controller 代码如下 public class LoginController : ApiController {...这是如果捕获到401错误,那么就要重定向/login页面 下面的代码就是用捕获401错误 app.config(function ($httpProvider) { var LogOutUserOn401...如果认证过期返回的302重定向mvc提供的登录界面而不是返回401错误代码,就需要修改Startup.Auth.cs public void ConfigureAuth(IAppBuilder app

    2.2K70

    ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇

    3.使用Authorize特性进行授权 ASP.NET Identity已经集成到了ASP.NET Framework中,在ASP.NET MVC 中,我们可以使用Authorize 特性进行授权,如下代码所示...处理,302 重定向/Account/Login 登录。...,重定向最初的地址,这样提高了用户体验。...最后,重定向ReturnUrl: return Redirect(returnUrl); 使用角色进行授权 在前一小节中,使用了Authorize 特性对指定区域进行受限访问,只有被身份验证通过后才能继续访问...在这一小节将更细粒度进行授权操作,在ASP.NET MVC Framework 中,Authorize 往往结合User 或者 Role 属性进行更小粒度的授权操作,正如如下代码所示: [Authorize

    3.5K60

    ASP.NET安全

    ASP.NET MVC为Forms认证提供了很多支持,并且有很强自定义性。从通过表单登录到用户信息存储在什么地方,怎么样去验证这些用户信息。...通过loginUrl指定我们认证用户的页面。这个Account Controller和 Login View还有一些允许用户注册的View都被ASP.NET MVC的internet模板默认实现了。...当然这个并没有错,毕竟如果每次都去验证用户名和密码是一次不小的开销,验证一次之后将登录信息保存到cookie中,至少在用户不关闭浏览器之前,我们不用再重新去验证用户。 安全隐患在哪里?   ...小到更改用户资料,大转走用户的账户余额都成为可能。   所以我们在处理请求的时候,不仅仅需要验证用户身份信息,还需要确保发送数据的表单是由我们服务器产生的。...我们已经为Edit 打上了Authorize属性,也就是说用户是需要登录才能访问这个Action的。从普通开发的角度来看,这个程序是不会有什么问题的,我们首先通过正常渠道添加了一个用户。 ?

    2.7K80

    .NET Core微服务之基于IdentityServer建立授权与验证服务(续)

    1.3 为要进行验证授权的方法添加[Authorize]特性   由于我们创建WebAPI时,默认有一个ValuesController,保留它,我们直接为这个Controller添加一个[Authorize...二、集成MVC Web Application 2.1 添加ASP.NET Core MVC项目   新建一个ASP.NET Core MVC项目,这里假设取名为MvcClient(占用端口5100)...而我们想要的效果是当User第一次点击About,页面重定向AuthorizationServer (localhost:5000),当用户登录验证授权之后,再重定向该网站。...此后一定时间范围内的第二次,第三次点击,都不再需要再重定向AuthorizationServer,而是直接读取保存的token。...RedirectUris是指登录成功之后需要重定向的地址(这里这个位置在MvcClient中),而PostLogoutRedirectUris是指登出之后需要重定向的地址。

    1.8K50

    ASP.NET MVC5高级编程 ——(6)过滤器

    注意:验证与授权是两回事,验证发生在授权之前。 默认的授权过滤器已经有了验证的功能,其验证的机理是利用Asp.net平台自带的验证机制,如表单验证和Windows验证。...使用授权过滤器几种情况如下: 1.直接在Action上或者控制器上加Authorize,表示启用了验证,但不牵涉授权。...需要注意的是:如果一个动作方法的所有异常过滤器均为把ExceptionHandled属性设置为true,MVC框架将使用默认的ASP.NET异常处理程序。...Result属性有异常过滤器使用,告诉MVC框架要做什么,异常过滤器的两个主要应用是记录该异常到日志,并把适当的消息显示给用户。...下面的代码将演示通过创建一个自定义的异常过滤器,当一个特定的钟类的未处理异常出现时,把该用户重定向一个指定的错误页面。 ?

    2.3K40

    七天学会ASP.NET MVC (四)——用户授权认证问题

    ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)——用户授权认证问题 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 七天学会ASP.NET MVC...实验16——添加客户端验证 实验17——添加授权认证 实验18——在View中显示用户名 实验19——实现注销操作 实验20——实现登录页面验证 实验21——实现登录页面客户端验证 总结 实验15——有关错误验证的保留值...Authorize属性有什么用? Asp.net MVC中提供四种过滤器来过滤请求和响应的,Authorize属性是在Authorize过滤器之后执行的,可以确保授权请求Action 方法处理。...实验20——实现登录页面验证 1....实验 21——登录页面实现客户端验证 在本实验中介绍一种方法实现客户端验证 1.

    8.7K50

    谈谈基于OAuth 2.0的第三方认证

    如右图所示,用户会先被客户端应用重定向授权服务器(login.live.com),具体的地址为“https://login.live.com/oauth20_authorize.srf”。...access_token={accesstoken}”)提供给资源服务器,后者据此验证请求的合法性并在验证成功的情况下将当前用户的基本信息JSON的形式返回给客户端应用。...现在我们直接利用浏览器来调用定义在DemoController中的Action方法GetProfile,如果当前用户尚未登录到Windows Live,浏览器会自动重定向Windows Live的登录界面...Live Connect授权页面重定向,相关的参数(respone-type、redirect_uri、client_id和scope)查询字符串的形式提供。...如果上面的代码片断所示,该方法会将该地址ViewBag的形式传递呈现的View之中。

    1.2K70

    ASP.NET Core Cookie 认证

    Cookie 认证是ASP.NET Core用来实现客户自定义认证逻辑,没有使用ASP.NET Core Identity 1 ASP.NET Core Cookie 认证例子 在.NET Core我们通常使用三步来配置...在上面代码我们在AddAuthentication()方法中使用CookieAuthenticationDefaults.AuthenticationScheme参数设置应用程序默认认证方法 这意味着登录成功后将为通过身份验证的用户创建一个...; using Microsoft.AspNetCore.Mvc; namespace AspNetCore.Cookie.Controllers { [Authorize] public...: 现在输入用户名和密码点击登录登录之后将会跳转到Secured页面,一旦用户经过身份验证,.ASPNetCore.Cookies 的 Cookie 将被创建并存储在浏览器中,我们可以在浏览器的“开发者工具...URL,因此应用程序将用户导向登录页面并且添加用户请求的地址,用户尝试打开的url被添加到浏览器查询字符串中,一旦用户成功授权,应用程序从查询字符串中读取return url,并跳转到这个url 当我们在浏览器中打开

    20610

    使用 OWIN 搭建 OAuth2 服务器

    , 说明如下: AuthorizeEndpointPath : 客户端应用将用户浏览器重定向用户同意颁发令牌或代码的地址, 必须以前倒斜杠 “/” 开始, 例如: /Authorize ; TokenEndpointPath...这个地址显示自定义错误信息, 则设置为 true , 只有当浏览器不能被重定向客户端时才需要, 比如 client_id 和 redirect_uri 不正确; /Authorize 节点可以通过提取添加到...OWIN 环境的 oauth.Error 、 oauth.ErrorDescription 和 oauth.ErrorUri 属性来显示错误; 如果设置为 false , 客户端浏览器将会被重定向默认的错误页面...用户管理与登录 OAuth 并不关注用户的管理, 在 ASP.NET 中, 应该有 Membership 或者 Identity 来完成, 但是 OAuth 又依赖于用户登录, 在这里仅创建一个简单的登录视图来实现用户登录的功能...string.IsNullOrEmpty(Request.Form.Get("isPersistent")); // 作为示例程序, 这里没有对用户进行验证, 直接登录用户输入的账户

    1.5K10

    ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证

    它允许客户端基于授权服务器执行的身份验证验证最终用户的身份,以及可互操作和类似REST的方式获取关于最终用户的基本配置文件信息。...创建一个MVC客户端 1.新建一个ASP.NET Core MVC应用程序 ?...你应该看到重定向IdentityServer的登录页面。 ? 成功登录后,用户将看到同意画面。 在这里,用户可以决定是否要将他的身份信息发布客户端应用程序。...可以使用客户端对象上的RequireConsent属性每个客户端为基础关闭同意询问。 ? 最后浏览器重定向客户端应用程序,该应用程序显示了用户的声明。 ?...添加注销 最后一步是给MVC客户端添加注销功能。 使用IdentityServer等身份验证服务,仅清除本地应用程序Cookie是不够的。 此外,您还需要往身份服务器交互,清除单点登录会话。

    3.4K30

    ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

    在本文中,将为大家介绍ASP.NET Identity 的高级功能,它支持声明式并且还可以灵活的与ASP.NET MVC 授权结合使用,同时,它还支持使用第三方来实现身份验证。...关于ASP.NET Identity 的基础知识,请参考如下文章: ASP.NET MVC 随想录——开始使用ASP.NET Identity,初级篇 ASP.NET MVC 随想录——探索ASP.NET...Identity 已经很好的集成ASP.NET 平台中,而HttpContext.User.Identity 属性返回一个 IIdentity 接口的实现,而当与ASP.NET Identity 结合使用时...这意味着,当用户点击Google登陆按钮后,浏览器重定向Google 身份验证服务然后一旦身份验证通过,重定向GoogleLoginCallBack: /// ///...,来获取AppUser对象,如果返回的对象不存在,这意味这这是该用户第一次登录到我们的应用程序中,所以我创建了一个AppUser对象并填充了属性然后将其保存到数据库中。

    2.3K80

    ASP.NET MVC的Action Filter

    MVC 框架默认将为 检查HTML 或其他危险输入传入的 HTTP 请求。 如果检测到,将引发异常。 使用此属性可以禁用请求验证。...AuthorizeAttribute Authorize 属性,可以对控制器操做的声明性的授权检查。 该属性可以限制特定角色中的用户的操作。...ValidateAntiForgeryTokenAttribute 此属性是一个解决方案帮助防止跨站点的请求攻击 (CSRF)。...验证(authorization)filter用于实现在controller action上的验证和授权,如Authorize filter就是一个验证filter的例子; Action filter包含一些逻辑...下面我们来介绍一个如何自定义一个Action Filter,这个示例的代码来自ASP.NET MVC 2示例Tailspin Travel,实现的功能是Action的执行时间,页面经常需要一个当前页面执行时间的功能

    1.8K100

    ASP.NET Core集成现有系统认证

    首先认证并不是登录。认证是一个知道用户是谁的一个过程。我们最早使用的基于Session的认证,拿到用户输入的用户名和密码数据库里面校验一,看看是否正确,如果是正确的我们就放到session里面。...现在用户登录之后我们跳转到了另一个页面,这个页面可能会写一段这样的代码。...if(Session["user"]==null) { Response.redirect("/login.aspx") } 如果用户登录的Session不存在则再跳回到登录页面让用户登录。...我们就会跳转用户一个没有权限的提示页面,或者返回  Forbidden 403 的HTTP 状态码,这是最简单的授权。 复杂的授权方式包括对角色,对具体资源访问以及操作的授权,这块我们后面再讲。...在ASP.NET Core下,MVC一个Middleware加入整个HTTP管道。

    2.7K90

    Membership三步曲之入门篇 - Membership基础示例

    集成MembershipASP.NET MVC网站中   这里我们的需求很简单,只是要实现一个包含注册、登录、以及修改密码功能的网站就可以了。...为Membership启用角色管理   我们已经完成了登录、注册和修改密码的功能。登录属性认证的范畴,而与认证如影随形的还是授权。...其实ASP.NET已经有一套比较成熟的权限体系,加上它的自定义功能基本可以满足我们大多数的需求了。   在我们创建这个MVC站点的时候,VS也为我们配置了权限模块。...通过项目->ASP.NET 配置就可以打开这个小网站去管理我们的角色(抱歉,我用的英文版 - -! )。   我们可以点击Security(安全)管理用户和角色的地页面。...在MVC的Action上我们可以直接在Authorize标签中指定某个角色,那么这个Action就只有这个角色下的用户才能够访问了。

    94560

    ASP.NET Core 3.0 的新增功能

    Razor 组件与 Razor Pages(页面)和 MVC 视图 (view) 相似,因为它们都使用 Razor。与基于“请求-响应”模型的页面与视图不同,组件专门用于处理 UI 合成。...有关更多信息,参见:ASP.NET Core 上 gRPC 的简介 SignalR 请参见更新 Signal 代码获取迁移说明。...新的 Razor 指令 以下列表包含了新的 Razor 指令: @attribute — @attribute 指令将给定属性应用于生成页面或者视图的类。...证书与 Kerberos 身份验证 证书身份验证要求: 配置服务器接收证书。 在 Startup.Configure 中添加身份验证中间件。...在 Windows 服务中承载 ASP.NET Core Forwarded 标头中间件的改进 在早期版本的 ASP.NET Core 中,应用在部署 Azure Linux 或者除 IIS 之外的任何反向代理之后

    6.7K30
    领券