Web 窗体窗口身份验证与远程 SQL 数据库
本文关键字:SQL 数据库 窗体 窗口 身份验证 Web | 更新日期: 2023-09-27 17:57:12
我有一个 ASP.NET 4.0 Web应用程序,它使用Windows身份验证来对抗AD和一个SQL Server进行角色管理。
基本上,我希望所有拥有 AD 帐户的用户都能够访问该应用程序,但我希望使用 Sql Server 中的角色进一步保护应用程序。我不希望用户必须输入密码进行身份验证。
在全局Application_Start方法中检查身份验证是否可行,还是应该在其他地方执行此代码?
Application_Start
仅在应用程序本身初始化时触发一次。 HttpContext.Current.User
将包含发出导致 IIS 初始化应用程序的 HTTP 请求的用户的详细信息。
请改用为每个传入请求引发的Application_BeginRequest
,但理想情况下,当 Web 应用程序打算执行操作时,您应该检查授权(而不是身份验证),而不是抢占每个请求。
经过进一步的研究,我发现了"Application_AuthenticateRequest",我认为这将满足我使用Windows身份验证和SQL Server角色配置的目的。
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (Request.IsAuthenticated)
{
// just grab the username without domain info
string[] arrTmp = HttpContext.Current.User.Identity.Name.Split('''');
string username = arrTmp[arrTmp.Length - 1];
// Create an array of role names
List<String> arrlstRoles = new List<String>();
// work-around
if (username == "fakename")
arrlstRoles.Add("Admin");
// Add the roles to the User Principal
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(User.Identity, arrlstRoles.ToArray<String>());
}
}