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

ASP.Net MVC 3重定向UnAuthorized用户不登录loginUrl

在这个问答内容中,我们要讨论的是如何在ASP.NET MVC 3中实现未授权用户的重定向,并将他们重定向到登录页面。以下是一个完整的答案,涵盖了问题的各个方面:

问题描述

在ASP.NET MVC 3中,如何将未授权用户重定向到登录页面?

解决方案

要实现这个功能,我们需要在ASP.NET MVC 3项目中进行以下操作:

  1. Web.config文件中配置身份验证和授权。
  2. 创建一个自定义的AuthorizeAttribute类。
  3. 在需要授权的控制器和操作上使用自定义的AuthorizeAttribute类。

详细步骤

  1. Web.config文件中配置身份验证和授权:
代码语言:xml<system.web>
复制
 <authentication mode="Forms">
   <forms loginUrl="~/Account/Login" timeout="2880" />
  </authentication>
 <authorization>
    <deny users="?" />
  </authorization>
</system.web>

在这里,我们设置了登录页面为~/Account/Login,并将未授权用户重定向到该页面。

  1. 创建一个自定义的AuthorizeAttribute类:
代码语言:csharp
复制
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
        else
        {
            filterContext.Result = new RedirectResult("~/Error/Unauthorized");
        }
    }
}

在这里,我们创建了一个名为CustomAuthorizeAttribute的自定义AuthorizeAttribute类,并重写了HandleUnauthorizedRequest方法。如果用户未经过身份验证,则将其重定向到登录页面。如果用户已经经过身份验证,但没有权限访问该页面,则将其重定向到错误页面。

  1. 在需要授权的控制器和操作上使用自定义的AuthorizeAttribute类:
代码语言:csharp
复制
[CustomAuthorize]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

在这里,我们将CustomAuthorize属性应用于HomeController类,以确保只有经过身份验证的用户才能访问该控制器中的操作。

总结

通过以上步骤,我们可以实现在ASP.NET MVC 3中将未授权用户重定向到登录页面。这种方法可以应用于任何ASP.NET MVC 3项目,并且可以根据需要进行自定义。

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

相关·内容

ASP.NET Core 2.0 MVC - 获取当前登录用户信息

获取当前登录用户的整体思路,我们可以通过创建一个静态的用户类,存储当前登录用户。通过将属性值存储在session中,从而存储到服务器的内存中,做到可以在系统全局中获取当前登录用户的数据信息。   ...在传统的MVC项目中我们可以直接使用HttpContext.Current.Session获取到session,从而做到对于数据的取值、赋值;而在ASP.NET Core MVC中,并没有HttpContext.Current.Session...二、实现思路   首先,在ASP.NET Core 中使用Session,我们需要将Session注入到ASP.NET Core的管道(pipeline)中,和我们使用MVC的方式相同,在ConfigureServices...value : ""); 79 } 80 81 #endregion 82 }   当我们创建好了这样一个静态类后,我们就可以在登录成功后,将当前登录用户信息赋值给这个静态类...CurrentUser赋值的相关代码如下所示: 1 /// 2 /// 设置当前登录用户 3 /// 4

2K20

ASP.NET MVC下判断用户登录和授权状态方法

在我们日常开发的绝大多数系统中,都涉及到管理用户登录和授权问题。登录功能(Authentication),针对于所有用户都开放;而授权(Authorization),则对于某种用户角色才开放。...在asp.net mvc中,微软虽然已经帮助开发者构建了ASP.NET Identity这样强大的验证授权框架,但是如果想定制更多的逻辑功能的话,还得自己动动手。...return View(); } } 继承ActionFilterAttribute: 由于继承Controller方法不太适合一个Controller下的有些Action需要登录有些...Action不需要登录的场景,所以针对每个Action写一个统一的特性会更好一些。...[Authentication] public ActionResult Index() { return View(); } } 如果你想针对整个MVC

4.2K21
  • Shiro框架学习,Shiro拦截器机制

    ; 2、如果没有登录,看看是否是登录请求,如果是get方法的登录页面请求,则继续拦截器链(到请求页面),否则如果是get方法的其他页面请求则保存当前请求并重定向登录页面; 3、如果是post方法的登录页面表单提交请求...,则收集用户名/密码登录即可,如果失败了保存错误消息到“shiroLoginFailure”并返回到登录页面; 4、如果登录成功了,且之前有保存的请求,则重定向到之前的这个请求,否则到默认的成功页面。...,将到onAccessDenied进行处理; 2、如果用户没有角色,接着判断用户有没有登录,如果没有登录重定向登录3、如果用户没有角色且设置了未授权页面(unauthorizedUrl),那么重定向到未授权页面...(rememberMe); loginUrl登录页面地址(/login.jsp);successUrl:登录成功后的默认重定向地址;failureKeyAttribute:登录失败后错误信息存储key...;主要属性:loginUrl登录页面地址(/login.jsp);unauthorizedUrl:未授权后重定向的地址;示例“/admin/**=roles[admin]” perms org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter

    1.4K20

    分享 Shiro 学习过程中遇到的一些问题

    loginUrl 这个配置的值为当用户访问需要授权的页面时,shiro 判断没有授权时跳转的页面。需要注意的是,在我们设计登录页面时,登录的表单提交的地址,也要和这个地址一样。...同时,这个过滤器会重定向到“/”这个路径,这就是我们题目所述问题的根源。 ?...接下来的过程就是: 我们登出之后重定向到“/”,“/”符合 “/** = authc”这个配置,需要验证才能访问; 然后我们进入了 loginUrl ,进行登录登录验证成功后,会跳转到上次访问失败的页面..., logout,手动进入登陆界面再次登录 按照标题的方式操作时,出现的现象是,当前 subject 的 principal 没有变更,同时我们继续跳转至登录界面,可以说很不符合客户体验的需求。...,这个方法会返回 true,我们就可以直接进入页面,走验证流程。

    94130

    关于ASP.NET MVC中使用Forms验证的问题

    这意味着当用户登录系统以后,他们得到一个包含基于用户信息的票据(ticket)。这些信息被存放在加密过的cookie里面,这些cookie和响应绑定在一起,因此每一次后续请求都会被自动提交到服务器。...当用户请求匿名用户无法访问的ASP.NET页面时,ASP.NET运行时验证这个表单验证票据是否有效。如果无效,ASP.NET自动将用户转到登录页面。这时就该由你来操作了。...你必须创建这个登录页面并且验证由登录页面提交的凭证。...如果用户验证成功,你只需要告诉ASP.NET架构验证成功(通过调用FormsAuthentication类的一个方法),运行库会自动设置验证cookie(实际上包含了票据)并将用户转到原先请求的页面。...3.这是Forms身份验证的默认设置,我们需要改动一下 ? 4.按这里修改一下,就可以了。 以上。

    1.4K20

    Shiro框架学习,Shiro与Web集成

    [main] #默认是/login.jsp authc.loginUrl=/login roles.unauthorizedUrl=/unauthorized perms.unauthorizedUrl...如果有错误再返回到登录页面;否则跳转到登录成功页面(此处应该返回到访问登录页面之前的那个页面,或者没有上一个页面时访问主页)。 3、JSP页面请参考源码。...来显示当前登录用户: Java代码 ?...当前实现的一个缺点就是,永远返回到同一个成功页面(比如首页),在实际项目中比如支付时如果没有登录将跳转到登录页面,登录成功后再跳回到支付页面;对于这种功能大家可以在登录时把当前请求保存下来,然后登录成功后再重定向到该请求即可...指定当身份验证时的登录表单;usernameParam指定登录表单提交的用户名参数名;passwordParam指定登录表单提交的密码参数名;successUrl指定登录成功后重定向的默认地址(默认是“

    1.2K40

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

    那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Identity 进行身份验证(Authentication)以及联合ASP.NET MVC 基于角色的授权...MVC 、Web Form 的表单身份验证实际由FormsAuthenticationModule 处理,而Katana重写了表单身份验证,所以有必要比较一下传统ASP.NET MVC & Web Form...3.使用Authorize特性进行授权 ASP.NET Identity已经集成到了ASP.NET Framework中,在ASP.NET MVC 中,我们可以使用Authorize 特性进行授权,如下代码所示...,然后请求在EndRequest 阶段被 OWIN Authentication Middleware 处理,302 重定向到/Account/Login 登录。...,重定向到最初的地址,这样提高了用户体验。

    3.5K60

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

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)——...ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)——用户授权认证问题 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 七天学会ASP.NET MVC...在本系列的第一讲中,我们了解了Asp.NetMVC的意义,知道MVCAsp.net的一部分,MVC继承了ASP.NET的所有特征,包含表单认证。 先来了解ASP.NET是如何进行Form认证的。...如果为找到“Authentication Cookie”,服务器会将用户作为匿名(未认证)用户处理,在这种情况下,如果请求的资源标记着 protected/secured,用户将会重定位到登录页面。...实验18——在View中显示UserName 在本实验中,我们会在View中显示已登录用户名 1.

    8.7K50

    快速入门系列--WebAPI--01基础

    WebAPI与ASP.NET路由的异同 ASP.NET MVC的路由:Routes(RouteCollection)的线程安全,读写锁,GetReadLock, GetWriteLock。...名称 状态 响应类型 Active Directory客户端证书身份验证 已禁用 HTTP 401 质询 ASP.NET 模式 已禁用 Forms身份验证 已禁用 HTTP 302 登录/重定向 Windows...步骤1:用户通过浏览器匿名向IIS发起请求,假设地址为"/home",它会收到状态为"302, Found"的相应,这是一个用于实现"重定向"的http响应,它通过location报头表示的重定向地址指向登录的页面...步骤2:浏览器接受到该请求后,针对重定向的地址发送请求,登录页面最终被呈现在浏览器。...ASP.NET Web API 2框架揭秘[M]. 北京:电子工业出版社, 2014. (美)加洛韦. ASP.NET MVC 5高级编程(第5版)[M].

    2.2K70

    37000 字 + 代码,艿艿肝的 Shiro 从入门到实战,直接收藏吃灰!

    处,设置各种 URL 。 #setLoginUrl(String loginUrl) 方法,设置登陆 URL 。...如果拦截的 URL 是 POST loginUrl 登陆请求,则基于请求表单的 username、password 进行认证。认证通过后,默认重定向到 GET loginSuccessUrl 地址。...在用户登陆成功后,重定向到该 URL 上。 logout :LogoutFilter :拦截的 URL ,执行退出操作。退出完成后,重定向到 GET loginUrl 登陆页面。...这样,在 POST loginUrl 地址上,我们可以从 attributes 中获取到失败的原因,提示给用户。 所以,POST loginUrl 的目的,实际是为了处理认真失败的情况。...例如说,用户、角色、权限等等信息。 如果非 AJAX 请求的情况下,重定向到登陆成功的页面。例如说,管理后台的 HOME 页面。

    2.4K20

    如何通过 ASWebAuthenticationSession 获取身份验证 code 码

    前言 ---- 项目中需要实现 GitHub、Google、Apple 登录,实现第三方登录方案有 3 种: 集成第三方一键登录 分别集成 GitHub、Google、Apple 登录 SDK 集成...SDK 打开浏览器登录 今天来讲一下集成 SDK 打开浏览器登录获取身份验证。...网站登录身份验证逻辑: 一些网站作为一种服务提供了一种用于验证用户身份的安全机制。 当用户导航到站点的身份验证URL时,站点将向用户提供一个表单以收集凭据。...验证凭据后,站点通常使用自定义方案将用户的浏览器重定向到指示身份验证尝试结果的URL。 2....但是 Google 提示在 App 内部打开登录页面是不安全的,因此只能选择第二种方式。 3. 打开手机自带浏览器获取身份验证 ---- ▐ 3.1 配置 URL Types ?

    1.6K20

    Shiro框架学习,Shiro与OAuth2集成

    chapter17-client/oauth2-login访问授权页面; 2、该控制器首先检查clientId是否正确;如果错误将返回相应的错误信息; 3、然后判断用户是否登录了,如果没有登录首先到登录页面登录...如果有效,则返回当前登录用户用户名。...; 2、接着如果用户还没有身份验证,判断是否有auth code参数(即是不是服务端授权之后返回的),如果没有则重定向到服务端进行授权; 3、否则调用executeLogin进行登录,通过auth code...创建OAuth2Token提交给Subject进行登录; 4、登录成功将回调onLoginSuccess方法重定向到成功页面; 5、登录失败则回调onLoginFailure重定向到失败页面。...2、输入用户名进行登录并授权; 3、如果登录成功,服务端会重定向到客户端,即之前客户端提供的地址http://localhost:9080/chapter17-client/oauth2-login?

    4.4K20

    asp.net Forms身份验证详解

    对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.net的时候就是这么做的。...当我将用户信息存在在Session中时,常常会遇到Session丢失导致用户无法正常访问被授权的资源,保持用户登录状态时的安全性问题,无休止的将用户导航到登录页面等莫名其妙的问题。   ...其实,在asp.net中,我们有更好的解决方案,那就是通过Forms身份验证,从而对用户进行授权,这种方法可以轻松的保持用户登录状态(如果用户想这样),便捷的用户授权配置,增强的安全性等好处。...loginUrl:指定如果找不到任何有效的身份验证 Cookie,将请求重定向到的用于登录的 URL。默认值为 login.aspx。...enableCrossAppRedirects:表明是否将通过身份验证的用户重定向到其他 Web 应用程序中的 URL。默认值为 False。

    2K10

    IdentityServer(12)- 使用 ASP.NET Core Identity

    如果需要一个新的用户数据库,那么ASP.NET Core Identity是你的一个选择。...创建一个ASP.NET Core Web应用程序 ? 然后选择Web应用程序(MVC) ? 然后点击“更改身份验证”按钮,选择“个人用户账户” ? 最后,你的设置应该是和下图一样: ?...并在注册页面上创建一个新的用户帐户: ? 现在你有一个用户帐户,你应该可以登录,使用客户端,并调用API。 在MVC客户端登录 启动MVC客户端应用程序,你应该能够点击“Secure”链接登录。 ?...您应该被重定向ASP.NET Identity登录页面。 用新创建的用户登录: ? 登录后,您应该跳过同意页面(给出我们上面所做的更改),并立即重定向MVC客户端应用程序,会显示你的用户信息。...现在,您已经从ASP.NET Ientity的用户登录

    1.7K30

    Shiro整合Spring实现登录验证和授权之入门

    “view”(视图) 支持单点登录(SSO)功能 支持提供“Remember Me”服务,获取用户关联信息而无需登录 … 等等——都集成到一个有凝聚力的易于使用的API。...那么就让我们来看看它们吧: Authentication(认证):用户身份识别,通常被称为用户登录” Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。...“Run As”:这个功能允许用户假设另一个用户的身份(在许可的前提下)。 “Remember Me”:跨 session 记录用户的身份,只有在强制需要时才需要登录。...项目目的 验证: 在表单输入用户名和(明文)密码,和数据库中的(密文)密码比对,设置好Shiro的加密算法后自动帮我们比对,如果和用户名和密码不正确,重定向到当前页面...="loginUrl" value="/login.jsp" /> <!

    32310
    领券