gpt4 book ai didi

c# - 如何在 asp.net mvc 中使用 {SiteName} 处理 [Authorize]

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:19 26 4
gpt4 key购买 nike

给定一个 mvc4,它在路由中有一个 {sitename} 参数,就像这样

routes.MapRoute(
"Sites", // Route name
"{sitename}/{controller}/{action}/{id}", // URL with parameters
new { sitename = "", controller = "Home", action = "Index", id = "" } // Parameter defaults
);

除了 AccountController 和任何其他使用 [Authorize] 属性的重定向器之外,一切都运行良好

 ~/Account/Login 

而不是

 ~/{sitename}/Account/Login 

为了一致性和美观

有办法改变吗?显而易见的答案是创建一个自定义的 AuthorizeAttribute 但大多数示例如 ASP.NET MVC 4 custom Authorize attribute - How to redirect unauthorized users to error page? 的答案只需调用

 base.HandleUnauthorizedRequest();

所以在我尝试 code/debug/code/debug 路线之前寻求任何帮助!

最佳答案

public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
var sitename = filterContext.RouteData.Values["sitename"] as string;
if (!string.IsNullOrEmpty(sitename))
{
var routeValues = new RouteValueDictionary(new
{
controller = "account",
action = "login",
sitename = sitename,
});
filterContext.Result = new RedirectToRouteResult(routeValues);
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}

关于c# - 如何在 asp.net mvc 中使用 {SiteName} 处理 [Authorize],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707122/

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