gpt4 book ai didi

c# - 拦截/停止经过身份验证的用户的 ASP.NET Identity 未经授权的重定向

转载 作者:太空宇宙 更新时间:2023-11-03 15:37:35 25 4
gpt4 key购买 nike

ASP.NET Identity 发出一个 302 Found 响应,为所有未经授权的请求重定向到登录页面,包括经过身份验证但权限不足的请求。将经过身份验证的用户重定向到登录页面是一种令人困惑的用户体验。

我如何拦截/停止/取消针对已验证用户的重定向并发出 403 Forbidden 响应(并因此显示我的自定义 403 页面)?未经身份验证的用户应继续看到标准行为。

我尝试在 CookieAuthenticationMiddleware 前后添加一个简单的自定义 Owin 中间件,但无法弄清楚如何识别未经授权的请求。

最佳答案

您需要一个具有类似代码的自定义身份验证过滤器:

public abstract class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
//Intercept results where person is authetnicated but still doesn't have permissions
if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Controller.TempData["ErrorMessage"] = "Sorry, you are logged in but you have attempted to access a page that you don't have permissions to.";

//TODO need to set up a route that points to your custom page, call that route RestrictedAccess
filterContext.Result = new RedirectToRouteResult("RestrictedAccess", new RouteValueDictionary());
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}

然后您需要将 [MyAuthorise] 属性应用到您的 Controller ,而不是 [Authorise]

关于c# - 拦截/停止经过身份验证的用户的 ASP.NET Identity 未经授权的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31325811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com