- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用获得许可的 Devart dotConnect 产品连接到我的 ASP.NET MVC5 项目中的 PostgreSql 数据库。我对 Devart Rolmanager 有疑问。我按照本教程安装了 Dotconnect PostgreSql https://www.devart.com/dotconnect/postgresql/articles/aspproviders.html#role
一切正常,但是当我在 View 中调用 admin 角色时,此功能无法正常工作。
在 DB 表 (aspnet_users) 中我有一个用户 (Foo),在表 (aspnet_roles) 中有 Admin 角色,在表 (aspnet_usersinroles) 中有 Id 连接。
功能:
@if(User.IsInRole("admin"))
{
<p>Test Admin page!</p>
}
快速观察显示:false。
这是我的 web.config 的一部分:
<connectionStrings>
<add name="DefaultConnection" connectionString="host=00.000.000.0;database=DB;user id=***;password=*******; Initial Schema=users" providerName="Devart.Data.PostgreSql"/>
<add name="DbEntities" connectionString="metadata=res://*/ModelDbFirst.csdl|res://*/ModelDbFirst.ssdl|res://*/ModelDbFirst.msl;provider=Npgsql;provider connection string="PORT=5520;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.5.0;DATABASE=;HOST=46.167.233.7;USER ID=***;PASSWORD=****;" providerName="System.Data.EntityClient"/>
</connectionStrings>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880"/>
</authentication>
<customErrors mode="Off" defaultRedirect="~/account/error"/>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
<membership defaultProvider="AspNetPgSqlMembershipProvider"
userIsOnlineTimeWindow="15">
<providers>
<add name="AspNetPgSqlMembershipProvider" type="Devart.Data.PostgreSql.Web.Providers.PgSqlMembershipProvider,Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701" description="dotConnect for PostgreSQL extended membership provider" connectionStringName="DefaultConnection"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
applicationName="/"
passwordAttemptWindow="10" />
</providers>
</membership>
<roleManager defaultProvider="AspNetPgSqlRoleProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieProtection="All" >
<providers>
<add name="AspNetPgSqlRoleProvider" type="Devart.Data.PostgreSql.Web.Providers.PgSqlRoleProvider, Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701" description="dotConnect for PostgreSQL extended role provider" applicationName="/" connectionStringName="DefaultConnection"/>
</providers>
</roleManager>
<siteMap defaultProvider="PgSqlSiteMapProvider">
<providers>
<add name="PgSqlSiteMapProvider"
type="Devart.Data.PostgreSql.Web.Providers.PgSqlSiteMapProvider,
Devart.Data.PostgreSql.Web, Version=7.4.478.0, Culture=neutral,
PublicKeyToken=09AF7300EEC23701"
connectionStringName="ConnectionString"
securityTrimmingEnabled="true"
/>
</providers>
</siteMap>
</system.web>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json"/>
</staticContent>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EnvDTE" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.2.0" newVersion="5.2.2.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql">
<parameters>
<parameter value="v12.0"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="Devart.Data.PostgreSql" type="Devart.Data.PostgreSql.Entity.PgSqlEntityProviderServices, Devart.Data.PostgreSql.Entity, Version=7.4.478.6, Culture=neutral, PublicKeyToken=09af7300eec23701"/>
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework"/>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Devart.Data.PostgreSql"/>
<add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.4.478.0, Culture=neutral, PublicKeyToken=09af7300eec23701"/>
</DbProviderFactories>
</system.data>
</configuration>
我该如何解决?
最佳答案
不确定这是查询中的拼写错误还是您的 View 有问题,但是被截断的代码(非常简短)似乎包含错误。那里似乎没有 if 语句。
@User.IsInRole("admin") { }
应该是
@if (User.IsInRole("admin")) { }
关于asp.net - 为什么 @User.IsInRole 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988908/
我在 Site.Master.cs 的 Page_Load 中有这段代码。 if(User.IsInRole("Read")) { NavigationMenu.Visible = false;
所以这是我当前的代码: List rowGroups = GetFileGroups((int)row.Cells["document_security_type"].Value); bool fou
请注意,我使用的是 c# MVC 3,我试图在一个类中使用它,而不是在 Controller 中。 我的程序顶部有以下内容 using System.Web.Security; 我尝试执行以下
目标 教导 User.IsInRole() 方法数据库中存在哪些角色。 问题 我不认识路。 实验室 我创建了以下 View 来测试角色检测: @if (User.IsInRole("Administr
我在周末实现了一个带有自定义身份验证的自定义 RoleProvider。使用 Silverlight 业务模板,我能够在服务请求上放置 [RequiresRole("Admin")] 属性: [Req
我在我的 Controller 代码和我的共享 _Layout View 中添加和删除角色的用户,我正在使用 User.IsInRole 相应地检查和删除链接,但只有当用户退出网站然后 User.Is
有人知道如何使 WindowsPrincipal.IsInRole("domain\role") 与事件目录通用组一起工作吗? 假设当前用户是名为域的域中名为角色的组的成员,并且该角色组是事件目录中的
我有一个连接到 WCF 服务的 WPF 客户端,我想锁定某些功能,以便只有某些用户可以执行某些操作。 WCF 服务在执行服务方法时模拟客户端用户。操作系统为Windows XP。 我正在阅读 this
我正在使用 WindowsPrincipal 的 IsInRole 方法检查 WPF 和 Winforms 应用程序中的组成员身份。我正在生成一个身份 token ,它可以用于任何 AD 用户(不一定
这个问题在这里已经有了答案: Usage of User.IsInRole() in a View (2 个答案) 关闭 7 年前。 我的页面上有 3 个角色,所以我想访问与两个角色的链接。 我试试
我有一个非常基本的 MVC4 应用程序,它通过对象实体模型连接到数据库。应用程序和数据库之间的连接正常,因为用户能够登录并且 Global.asax 中的以下代码正在运行(它成功地从数据库中检索用户角
我无法让我的注册脚本在 PowerShell (admin) 中运行。它可以在 Powershell ISE 中运行,但随后脚本卡在“正在连接到服务器...” 我做错了什么吗? 这是脚本: $Err
其实很简单的问题: 我目前已禁用IIS匿名访问,用户将使用其Windows登录名自动登录。但是,调用User.IsInRole(“角色名称”)将返回false。我仔细检查了User.Identity.
我需要实现基于 Active Directory 组的授权。有人可以解释一下下面的代码是如何工作的吗? User.IsInRole("Human Resouces") 问题: Is role "Hum
...我想在用户是管理员时显示“删除”按钮,在用户是贡献者时显示“添加项目”按钮:
我正在实现一个我想在多个应用程序中使用的自定义 IPrincipal。我有 2 个关于 IsInRole 方法的问题... 1) 是否建议我将自定义 RoleProvider 与自定义 IPrinci
在 ASP.NET MVC 5 应用程序中,我使用 Unity 容器创建 OWIN/Identity 对象并解析所有依赖项。 问题是当我注册为新用户并给他分配这样的角色时 userManager.Ad
我正在尝试构建自定义验证,以检查角色是否包含用户。我在使用字符串数组时遇到问题,检查它是否包含特定值的最佳方法是什么? public string[] AuthRoles { get; set
我有一个严重依赖用户授权的应用程序。在其中,我使用 IPrincipal.IsInRole() 检查用户是否在正确的组中: IPrincipal principal = Thread.CurrentP
我正在处理基于声明的身份验证,它运行良好。现在我想添加角色授权。我有用户的角色声明(例如“管理员”) When the IsInRole() method is called, there is a
我是一名优秀的程序员,十分优秀!