我的 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/