我正在使用Windows身份验证,并且在控制器类的顶部放置了一个Authorize
属性,以确保仅Active Directory中的特定组可以访问管理员功能。我的问题是,当我尝试从Admin controller
转到任何视图时,它将要求进行9次身份验证,而第一次访问控制器时要求进行1次身份验证。似乎可以记住,我已经通过了查看视图的身份验证,但是随后它在加载视图时运行了一些任务,这需要9次新的身份验证。我不知道为什么要这么做。
我尝试将Authorize
属性放在方法而不是类上,但是即使没有Authorize
属性的方法也可以这样做。我的猜测是,initialize method
会提示您进行授权,但是我尝试以调试模式运行该应用程序并一步一步地完成initialize method
的每一行,但没有提示在完成方法之前进行授权。也许是database context
?任何帮助解决此问题的帮助都将受到赞赏!
当我尝试创建此授权功能时,下面是我添加的唯一代码。
管理控制器:
[Authorize(Roles = "DOMAIN\\SECURITY-GROUP")]
public class AdminController : Controller
{
private ITScreenContext db = new ITScreenContext();
private EmailService emailService = new EmailService();
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
string culture = requestContext.RouteData.Values["lang"]?.ToString() ?? "en";
var cultureInfo = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
}
// GET: Admin
public ActionResult Index()
{
return View(db.PP_Items.ToList());
}
Web.config:
<system.web>
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.7.2" />
<httpRuntime targetFramework="4.7.2" />
<customErrors mode="Off" />
<sessionState mode="InProc" timeout="11" />
</system.web>