如何指定AuthenticationScheme
是Windows
并检查用户是否是广告组的成员?
当我指定AuthenticationScheme
时,设置Roles
不再有效,为什么不呢?以及我该如何解决?
public class SomeController : Controller
{
//this works
[Authorize(Roles = @"SOME.DOMAIN\SOME GROUP")]
public IActionResult SomeAction(){ ... }
//this works
[Authorize(AuthenticationSchemes = "Windows")]
//this doesn't work
//[Authorize(Roles = @"SOME.DOMAIN\SOME GROUP", AuthenticationSchemes = "Windows")]
public ActionResult SomeAction2(){ ... }
}
某些背景
我们有一个名为SOME GROUP
的广告组,该用户必须是执行某些操作的成员。在网络应用的其他部分,我们使用的是Cookie身份验证,因此我需要在此特定控制器中指定身份验证方法。
答案 0 :(得分:0)
Windows身份验证是different的所有其他身份验证处理程序。 ASP.NET不执行身份验证,Windows组件执行身份验证,然后将其创建的身份的句柄传递给ASP.NET Core。它不是为Windows匿名用户设计的,也不是要与其他身份验证类型混合使用的,而是Windows和Anonymous,或者仅仅是Windows。
不支持将其与其他任何事物混合,因此即使它确实起作用,也不必限制方案。
答案 1 :(得分:0)
结果是,Theatre(t_name, city, sinceYear);
Actor(a_id, a_name, birthYear, city);
Play(p_id, title, playwright, director, year);
Role(a_id, p_id, role, t_name);
Theatre:
Abima|tel aviv|1/1/1960
Miskan|beer sheba|20/2/1970
Akamri|haifa|15/3/1989
Actor:
204458952|Dani|22/1/1993|sderot
221354875|Osher|23/8/1995|beer sheba
251445841|Avi|5/12/1998|haifa
304226152|Noa|12/5/1992|tel avia
304804123|Shir|10/6/1990|beer sheba
Play:
111|Meri lo|Lior|Hanoh levin|2010
222|Tov agmad|Asaf|Nisim Aloni|2016
333|Songs|Ami|Hanoh levin|2018
444|Run it|Sami|Nisim Aloni|2010
Role:
304804123|111|meri|Abima
304226152|111|sonia|Abima
251445841|222|tov tov|Miskan
204458952|222|gamad |Abima
221354875|333|prince|Akamri
304804123|222|princes|Abima
被保留在 SELECT a_id, a_name FROM (
Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND
Role.p_id=Play.p_id WHERE
director='Hanoh levin') AND NOT EXISTS (
Select * FROM Actor JOIN Play, Role ON Actor.a_id=Role.a_id AND
Role.p_id=Play.p_id WHERE
director='Nisim Aloni');
对象中,使我们可以检查组/角色成员身份。
内联示例
WindowsIdentity
政策示例
HttpContext.User