我想添加一個自定義授權策略,它可以檢查json配置文件中提供的組的分隔列表。我正在使用ASP.Net 5 - MVC 6,以及Windows身份驗證。ASP.Net 5授權處理程序失敗重定向
一切工作正常,除了當我打電話給失敗。然後沒有任何反應顯示一個空白屏幕。這是我的HandleRequirementAsync方法。我已經爲任務結果嘗試了各種值。我一直在瘋狂地Google搜索,但沒有運氣。希望有人能幫助。
DESIRED RESULT:我想重定向到一個失敗的自定義頁面,但如果這是不可能的,至少能夠重定向回登錄頁面。似乎有任何影響的唯一的事情是拋出一個異常。
在啓動相關的註冊代碼:
var appSettings = Configuration.GetSection("AppSettings");
services.Configure<Models.AppSettings>(appSettings);
services.AddMvc();
services.AddAuthorization(options =>
{
options.AddPolicy("RoleAuth", policy => policy.Requirements.Add(new RolesRequirement(appSettings["AllowedGroups"])));
});
services.AddSingleton<IAuthorizationHandler, RoleAuthorizationHandler>();
和授權類:
public class RolesRequirement : IAuthorizationRequirement
{
public RolesRequirement(string groups)
{
Groups = groups;
}
public string Groups { get; private set; }
}
public class RoleAuthorizationHandler : AuthorizationHandler<RolesRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolesRequirement requirement)
{
if (!string.IsNullOrWhiteSpace(requirement.Groups))
{
Console.WriteLine(requirement.Groups);
var groups = requirement.Groups.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//we could check for group membership here.... maybe???
foreach (var group in groups)
{
if (context.User.IsInRole(group))
{
context.Succeed(requirement);
return Task.FromResult(0);
}
}
}
else
{
context.Succeed(requirement);
}
context.Fail();
return Task.FromResult(0);
}
}
目前還在尋找一種方式來重定向發生故障時,你有沒有運氣? –
不是亞歷克斯。沒有運氣。抱歉。 – SpaceGhost440