gpt4 book ai didi

asp.net - 使用自定义 AuthorizeAttribute 生成返回 URL

转载 作者:行者123 更新时间:2023-12-03 15:08:54 25 4
gpt4 key购买 nike

我有一个自定义授权属性:

using System;
using System.Web.Mvc;
using System.Web.Routing;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.Request.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Login", action = "Login" }));
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}

...我用来装饰某些 Controller :
[MyAuthorizeAttribute(Roles = "Superman, Batman, Spiderman")]
public class SuperHeroController : Controller
{
// ....
}

任何人都可以解释如何修改授权代码,以便如果授权失败,登录 URL 包含 ReturnUrl (当前 Controller /方法的 URL)?

这基本上是试图模仿 Web 表单 ReturnUrl 逻辑,但以一种智能的方式,我不必手动为 URL 使用字符串。

最佳答案

终于想通了,虽然有人可能会提出更好的方法......

filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
controller = "Login",
action = "Login",
returnUrl = filterContext.HttpContext.Request.Url.GetComponents(UriComponents.PathAndQuery, UriFormat.SafeUnescaped)
}));

关于asp.net - 使用自定义 AuthorizeAttribute 生成返回 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800361/

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