c# - 如何在 CustomAuthorizeAttribute 之后禁用重定向到 /identity/account/login?
问题描述
我在 ASP.NET Core 项目中使用自定义授权系统并实现了我在控制器上设置的授权属性。
public class CustomAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter
{
void IAuthorizationFilter.OnAuthorization(AuthorizationFilterContext filterContext)
{
ApplicationDbContext db = (ApplicationDbContext)filterContext.HttpContext.RequestServices.GetService(typeof(ApplicationDbContext));
if (string.IsNullOrEmpty(filterContext.HttpContext.Session.GetString("username")))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { area = "", controller = "AccountUser", action = "Login"}));
}
else
{
var account = db.Accounts.Where(c => c.Username.Equals(filterContext.HttpContext.Session.GetString("username")));
CustomPrincipal cp = new CustomPrincipal(account.First());
if (!cp.IsInRole(Roles))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { area = "", controller = "AccountUser", action = "AccsessDenied" }));
}
}
}
}
当授权用户访问此控制器时,我不需要转换到 /identity/account/login 。
如何确保在 OnAuthorization 成功执行后,重定向不是针对身份,而是针对用户访问的控制器?
解决方案
推荐阅读
- php - PHP readdir() 并返回一个假值
- python - 如何在三元素数组中找到唯一元素?
- python-3.x - 如何处理 Pandas Dataframe 中保存为字符串的“年龄箱”?
- c# - 如何为多个用户实现一个命令列表?
- flutter - 发生 Android Studio IDE 内部错误 Error says Unable to serialize DslActivationStatus state
- python - 如何从模型中获取 masklen
- mysql - Mysql debezium connector for rds in production 导致死锁
- java - 如何使用组分隔符解析 GS1 条码?
- flutter - 颤振中有垂直导航栏的选项吗?
- mysql - 在 mySQL 中使用 json_array 拆分数组中的 json 元素