.net - 如何通过从 Asp.NET Controller 抛出异常来重定向?

标签 .net asp.net-mvc redirect

我的 Controller 都扩展了一个基本的 UserAwareController 类,它公开了 GetCurrentUser() 方法。如果用户尚未登录,我希望对此方法的任何调用都重定向到登录页面。

我可以通过从这个方法中抛出一些异常来完成这个吗?抛出此异常时,我如何才能导致重定向发生?

最佳答案

虽然我认为您应该改变有关授权的解决方案,但您可以坚持使用此代码:

public partial class BaseUserAwareController : Controller
{
    protected override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (GetCurrentUser() == null)
        {
            filterContext.Result = new HttpUnauthorizedResult();
        }
    }
}

如果你的项目不是太大,考虑改成使用[Authorize]。如果你使用它,它只会是:

[Authorize]
public partial class UserAwareController : Controller
{

}

您可能认为这并没有太大区别,但是 [Authorize] 还处理了一些缓存问题(当您不再被授权时返回缓存的响应)。

安装 MVC 2 并创建新的 MVC 2 Web 应用程序。它包含您可以在您的应用程序中适当使用的授权逻辑。

关于.net - 如何通过从 Asp.NET Controller 抛出异常来重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723175/

相关文章:

c# - 在 C# 中使用队列?

asp.net-mvc - ASP.NET MVC : Accessing ModelMetadata for items in a collection

redirect - Spring Security-Grails 3.2.2-ERR_TOO_MANY_REDIRECTS

c# - Xamarin 可移植 .NETStandard 1.5 单元测试

mysql - SQL 查询和线程

asp.net-mvc - 如何更改 jslint(VS 2010 扩展名)以忽略文件?

javascript - Knockoutjs DropDownList 与 ViewBag

PHP CURL 跟随重定向获取 HTTP 状态

php - 如何重定向到我在表单中提交的页面(分页)

c# - 如何从 .NET 类中以编程方式访问服务器级 IIS 连接设置?