【问题标题】:Redirect user if they enter from page other than Index page [closed]如果用户从索引页面以外的页面进入,则重定向用户[关闭]
【发布时间】:2017-01-03 19:41:12
【问题描述】:

我正在使用 ASP.NET 核心 Razor 引擎。我想确保用户是否转到除了索引页面之外的任何其他页面(cshtml 文件)将它们重定向到索引页面。

索引页面是用户登录的地方。我的策略是在每个页面上显示用户的名字。如果 first name 为 null 则重定向到索引页面。

我遇到了如何重定向的问题,或者有更好的方法吗?

这是我的代码:

 <h1>Hello @TempData["first_name"] @TempData["last_name"]</h1>
 @if(TempData["first_name"]!=  null)
 {
     @{Response.Redirect("~/Index");
 }

【问题讨论】:

  • 不要那样做。相反,请使用操作过滤器。
  • 您不是从 view 重定向,而是从 controller 重定向。或者,如果想要在许多地方执行相同的重定向逻辑(在这种情况下听起来很像),您可以向中间件添加更通用的东西(如上面建议的操作过滤器),以便默认执行所有动作。
  • @Aaron 你如何验证用户身份?

标签: c# asp.net asp.net-mvc razor asp.net-core


【解决方案1】:

AuthorizeAttributeforms authentication 结合使用。

使用 AuthorizeAttribute

当您使用 AuthorizeAttribute 标记操作方法时,对该操作方法的访问仅限于经过身份验证和授权的用户。如果使用该属性标记控制器,则控制器中的所有操作方法都会受到限制。在标有 AuthorizeAttribute 属性的控制器中,您可以使用 AllowAnonymousAttribute 属性来指定特定操作方法不仅限于授权用户。

Authorize 属性允许您指示授权仅限于预定义的角色或单个用户。您使用 Roles 和 Users 属性来指定允许哪些角色或用户访问操作方法。这使您可以高度控制谁有权查看网站上的任何页面。

如果未经授权的用户尝试访问标有 Authorize 属性的方法,MVC 框架将返回 401 HTTP 状态代码。如果站点配置为使用 ASP.NET 表单身份验证,则 401 状态代码会导致浏览器将用户重定向到登录页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2016-04-21
    • 2014-02-28
    • 2015-08-04
    相关资源
    最近更新 更多