.net 如何手动设置为未经授权并重定向到自定义页面?

.net 如何手动设置为未经授权并重定向到自定义页面?,.net,.net,我正在向web应用程序添加自定义未经授权的页面。根据用户所在的特定广告组,他们被允许登录,否则他们将被重定向到一个页面,该页面显示他们未经授权使用该应用程序。该组包含在令牌中,我想在if语句中对其进行过滤。我尝试了以下选项,但都不起作用 这是我的startup.cs文件(为了简洁起见删除了一些代码): 有人知道如何根据令牌信息为未经授权的用户实现重定向吗?通过在令牌中添加基于组的角色来修复此问题。 将此添加到startup.cs: options.Events = new OpenIdConne

我正在向web应用程序添加自定义未经授权的页面。根据用户所在的特定广告组,他们被允许登录,否则他们将被重定向到一个页面,该页面显示他们未经授权使用该应用程序。该组包含在令牌中,我想在if语句中对其进行过滤。我尝试了以下选项,但都不起作用

这是我的startup.cs文件(为了简洁起见删除了一些代码):


有人知道如何根据令牌信息为未经授权的用户实现重定向吗?

通过在令牌中添加基于组的角色来修复此问题。 将此添加到startup.cs:

options.Events = new OpenIdConnectEvents
{
    OnTokenValidated = (TokenValidatedContext c) =>
    {
        var token = c.SecurityToken;
        var name = c.SecurityToken.Claims.FirstOrDefault(claim => claim.Type == "name");
        var group = c.SecurityToken.Claims.FirstOrDefault(claim => claim.Type == "group");
        if (name != null && group != null)
        {
            // Only users present in this AD group are allowed access to the web app
            if (group.ToString().Contains("GROUP_ONE"))
            {
                var claimsIdentity = (ClaimsIdentity)c.Principal.Identity;
                claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
            }
        }
        else
        {
            System.Diagnostics.Debug.WriteLine("Token NOT validated for user");
        }
        return Task.CompletedTask;
    }
};
然后基于此角色在HomeController中处理重定向:

[Authorize]
public class HomeController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
        // If user does not have the role of Admin, redirect to NoAccess page
        if (!User.IsInRole("Admin"))
        {
            return RedirectToAction("UnAuthorized");
        }

        return View();
    }

    public IActionResult UnAuthorized()
    {
        return View("~/Views/Shared/NoAccess.cshtml");
    }
}

在您的广告中创建一些用户配置文件“authAdmin”,它将调用广告。在此之后,使用本手册仅通过使用authAdmin凭据的用户名从广告中获取用户,并检查用户是否具有必需的组。我无法访问广告。广告在其他地方管理。他们只是给我发了组名,说可以根据组进行授权。是吗?谁给你发的组名?您需要AD中该组的用户列表。如果您无权访问AD或不知道该组中的用户名,您将不会授权任何人。
[Authorize]
public class HomeController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
        // If user does not have the role of Admin, redirect to NoAccess page
        if (!User.IsInRole("Admin"))
        {
            return RedirectToAction("UnAuthorized");
        }

        return View();
    }

    public IActionResult UnAuthorized()
    {
        return View("~/Views/Shared/NoAccess.cshtml");
    }
}