c# - 如何从 asp net core 中的 AuthorizationFilter 重定向到登录页面?
问题描述
当我返回ForbidResult()
时,它会重定向到AccessDenied
启动时指定的页面。我想做同样的事情,UnauthorizedResult()
但重定向到Login
页面。
PS 我没有Authorize
在我自己的控制器中使用标准属性。
授权过滤器:
public class MyFilter : IAuthorizationFilter
{
//
public MyFilter()
{
//
}
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
var hasPermission= ... ;
if (!hasPermission)
{
context.Result = new ForbidResult();
}
}
else
{
context.Result = new UnauthorizedResult();
}
}
}
启动:
services.AddAuthentication.AddCookie(options =>
{
options.LoginPath = "/Accounts/Login";
options.LogoutPath = "/Accounts/Logout";
options.AccessDeniedPath = "/Accounts/AccessDenied";
});
解决方案
您可以使用 RedirectResult 或 context.Response.Redirect("/Accounts/Login"); 进行测试
public class MyFilter : IAuthorizationFilter
{
//
public MyFilter()
{
//
}
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
var hasPermission= ... ;
if (!hasPermission)
{
context.Result = new ForbidResult();
}
}
else
{
context.Result = new RedirectResult("/Accounts/Login");
}
}
}
推荐阅读
- python - h2o 并从 python 设置目标框架
- openstack - 添加新“组件”时更新现有 terraform 计算实例
- sharepoint - 使用 microsoft graph 在 sharepoint 站点上创建页面
- python - 对对进行约束的洗牌
- while-loop - Power BI while 循环
- docusignapi - 如何使用 DocuSign API 获取现有信封收件人视图的 URL?
- sql - 使用 SQL 进行分组排序
- java - 如何为两个不同的子类创建超类
- ios - iOS Swift:在不调整大小的情况下旋转和缩放 UIView
- python - 为什么 tf.layers.dense 会抛出 AttributeError?