我目前正在用ASP.NET Azure AD登录完成我的ASP.NET MVC网站。Asp.net MVC azure广告组标识
对于本网站,某些页面只能由管理员访问。对于这一点,我做了的命名testAdmins
一个新的小组,当我检查,如果用户可以访问一个网页,我用这个:
ClaimsPrincipal principal = User as ClaimsPrincipal;
if (principal.Claims.Any(x => x.Type == "groups" && x.Value == "id of testAdmins")){ //code }
而且它的正常工作与我的用户女巫这一组。
但是,当我将testAdmins
的ID更改为真实组管理员的值(Admins
)时,我将在网站将部署时使用,并且我不在时,服务器不显示任何内容为40秒,然后我得到这样的信息:
类型的异常“System.Web.HttpException”发生在 System.Web.dll中但在用户代码中没有处理
其他信息:无法连接到SQL Server数据库。
有人能解释我发生了什么事吗?
在此先感谢
PS:我做了一些更多的测试...当我的用户是该组中它的工作速度快,但时,它不是需要2分钟,并做了错误信息......如果有人为不知道有什么问题,有没有人有办法让来自用户的不同访问权限在Azure Active Directory的特殊组中?
Omg真的吗?你确定吗?因为如果我在小组中,它是行得通的......也许他看起来太过分了,因为'principal.Claims.Any(x => x.Type ==“groups”&& x.Value = =“testAdmins的id”)'太大了? – MrPixel6
ClaimPricipal的声明属性是由OpenID Connect Owin中间件初始化的收集属性。当您查询此属性时,无法访问任何数据库。而且它不会造成超时。去看看关于ClaimsPrincipal和它的Claims属性的文档,mrPixel!您还可以执行一些JustDecompile来检查ClaimsPrincipal类型,并亲眼看到没有调用DB。 – astaykov
好的,谢谢你的帮助! – MrPixel6