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