验证 Active Directory 窗口授权是否已在 MVC5 应用程序中正确设置
本文关键字:应用程序 MVC5 设置 Directory Active 窗口 授权 是否 验证 | 更新日期: 2023-09-27 18:30:58
我已经开始为一个内部网站开发一个小型网络应用程序。默认视图将是一个简单的表,其中列出了 Oracle 数据库中的所有数据,并带有多个用于搜索条件的文本框。还将有一个用于此表中数据的"管理"视图,我想通过Active Directory凭据将其锁定。
参考 ASP.Net 文章"使用 Windows 身份验证对用户进行身份验证",我尝试实现这一点。按照本文中的说明,我修改了用于Windows身份验证的主Web.config:
<authentication mode="Windows" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTracking.WebRequestTrackingModule, Microsoft.ApplicationInsights.Extensibility.Web" />
</httpModules>
由于我目前正在通过Visual Studio附带的 ASP.NET 开发Web服务器进行开发,因此我认为目前不需要启用NTLM身份验证或IIS功能(如果我忽略了一些重要的事情,请随时纠正我)。
然后,我通过设置我的控制器''HomeController继续阅读本文.cs类似于示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using InventoryTracker.Models;
using InventoryTracker.DAL;
using System.Web.Mvc.Ajax;
namespace InventoryTracker.Controllers
{
public class HomeController : Controller
{
InventoryTrackerContext _db = new InventoryTrackerContext();
public ActionResult Index(INV_Assets defModel)
{
return View(defModel);
}
[Authorize(Roles="IT Group")]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
[Authorize(Roles="SomeDomain''aguy")]
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
不过,我觉得奇怪的是,当我第一次登录时,我首先被迫注册?注册后,我现在可以登录,但我不确定[Authorize]
属性是否实际生效。
例如,当我转到当前为Roles="IT Group"
设置的About()
页面(以前使用Roles="Managers"
)时,因为我是IT组的一员,而不是在那里,而是要求我再次登录?
谁能提供一些关于我可能做错什么的见解?
运行 Windows 身份验证的应用的默认行为是自动登录。但是,如果您尝试访问用户无权访问的网站的某些部分,它可以回退到实际的登录表单,让您有机会通过登录另一个帐户来"升级"您的权限,而不是您在系统上运行的帐户。长短,如果您被抛到登录屏幕,那是因为您的用户帐户没有必要的权限。