我目前正在使用azure AD登录在ASP.NET MVC中完成我的网站。
对于本网站,某些页面只能由管理员访问。为此,我创建了一个名为IView
的新组,当我检查用户是否可以访问某个页面时,我使用了这个:
testAdmins
它和我的用户女巫一起工作正常。
但是,当我使用真实管理员组(ClaimsPrincipal principal = User as ClaimsPrincipal;
if (principal.Claims.Any(x => x.Type == "groups" && x.Value == "id of testAdmins")){ //code }
)的值更改testAdmins
的ID时,我会在部署网站时使用,并且我会在;没有,服务器没有显示任何内容40秒,然后我收到了这条消息:
类型' System.Web.HttpException'的例外情况发生在 System.Web.dll但未在用户代码中处理
其他信息:无法连接到SQL Server数据库。
有人可以解释一下我发生了什么吗?
提前致谢
PS:我做了一些测试...当我的用户在组中时它工作得很快但是当它不需要2分钟并且做错误信息...如果有人不知道什么是问题是,是否有人有办法从Azure Active Directory中的特殊组中对用户进行不同的访问?答案 0 :(得分:0)
提供整个堆栈跟踪和相关的源代码行(完整的堆栈跟踪包括文件名和行号!)。您面临的问题对于入职开发人员来说非常普遍(加入ASP.NET 4.0+)。
您的项目基于ASP.NET 4.0(或更高版本)的默认项目模板,默认情况下会使用“本地用户帐户”创建网站。此模板为用户身份验证/授权创建实体框架数据库上下文和本地模型。这还会在web.config中创建一些设置,以定义EF的连接字符串(或指示默认字符串)。
在该模板的顶部,您添加了必要的Azure AD身份验证详细信息 - 通过右键单击菜单(配置Azure AD身份验证 - 在VS 2015中可用)或手动添加一堆NuGet包。因此,您(不知道)创建了一个令人讨厌的混合FBA(基于表单的身份验证) - 由本地帐户和OpenID Connect决定 - 由Azure AD身份验证决定。
SQL Server错误来自该FBA(或本地用户帐户设置)配置。并没有简单的方法来删除它。
因为我看到你正在玩游戏并测试一些东西,所以我会热烈建议你重新开始一个新项目,并在向导的第二步时小心(VS 2013和VS 2015都有) - 点击在“更改身份验证”并选择“无身份验证”:
在这个干净的项目中,您可以添加Azure AD身份验证,一切都会正常工作,您将看不到任何SQL Server错误(这取决于您如何配置Azure AD Auth - 一些wizzards - 即Multi -tenant还会创建EF上下文。