0

我的 asp.net 应用程序部署在aaa具有Windows Authentication. 用户尝试使用域登录bbb。它不拒绝登录提示窗口。访问 SQL 服务器时抛出错误。

    Server Error in '/' Application.
    Login failed for user 'bbb\user'.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.SqlClient.SqlException: Login failed for user 
'bbb\user'.

    Source Error:      

    Line 7:          username = username.Substring(pos + 1)
    Line 8:          
    Line 9:          Clients = (From c In SGAEntities.Dim_Client
    Line 10:                    Where c.App_Users_Clients.Any(Function(userclient) userclient.App_Users.Username = username And userclient.App_Users.RecordStatus = 1 And userclient.Access_Level = 1)
    Line 11:                     Select c).ToList()


    Source File: error   Line: 9

    Stack Trace:

网页配置

<authentication mode="Windows"/>
<authorization>
  <deny users = "?" />
</authorization>
<identity impersonate="true"/>

当他尝试使用不同的域登录时如何停止用户网站访问?

更新

按照朋友的建议,将 Impersonate 更改为false. 得到不同的错误。

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。

源错误:

第 7 行:username = username.Substring(pos + 1) 第 8 行:第 9 行:Clients = (From c In SGAEntities.Dim_Client 第 10 行:其中 c.App_Users_Clients.Any(Function(userclient) userclient.App_Users.Username = username And userclient.App_Users.RecordStatus = 1 和 userclient.Access_Level = 1) 第 11 行:选择 c).ToList()

数据库连接字符串是

    <add name="Entities" connectionString="metadata=res://*/Data.csdl|res://*/Data.ssdl|res://*
/Data.msl;provider=System.Data.SqlClient;provider connection string='data
source=server;initial catalog=database;Trusted_Connection=Yes;multipleactiveresultsets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
4

2 回答 2

0

在 IIS 中,确保不选择匿名访问,只需要选择集成的 windows 身份验证。此外,我假设您在部分中提到了身份验证和授权标签<system.web>

于 2013-06-13T00:29:25.417 回答
0

当您在 IIS express 等下开发和运行时,Impersonate 意味着它使用您的 Windows 帐户访问 SQL Server。当直接在 IIS 下运行,并且 Impersonate 关闭时,它将使用内置的匿名帐户。您应该确定这是否真的是您希望设置 SQL Server 的方式。

我过去所做的是创建一个 SQL Server 登录并在连接字符串中指定它;或者,您可以配置 SQL Server 以授予 IIS 机器权限。

于 2013-06-13T18:03:59.143 回答