在 Razor 中使用 Roles.IsUserInRole 时出错
Error using Roles.IsUserInRole in Razor
我正在使用 MVC 5,我的视图中有以下代码:
@if (Roles.IsUserInRole("admin"))
{
<li class="@Html.IsSelected(controller: "Vacants")">
<a href="#"><i class="fa fa-edit"></i> <span class="nav-label">Vacants</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li class="@Html.IsSelected(action: "Create")"><a href="@Url.Action("Create", "Vacants")">Create New Vacatns</a></li>
<li class="@Html.IsSelected(action: "Morris")"><a href="@Url.Action("Edit", "Vacants")">Edit Vacant</a></li>
<li class="@Html.IsSelected(action: "Rickshaw")"><a href="@Url.Action("Delete", "Vacants")">Delete Vacant</a></li>
<li class="@Html.IsSelected(action: "Chartjs")"><a href="@Url.Action("History", "Vacants")">History</a></li>
</ul>
</li>
}
一开始,当我 运行 我的网站时,我收到一条错误消息,指出 RoleManager 功能未启用.所以,我在网络配置中启用它。
<system.web>
. . .
<roleManager enabled="true" />
</system.web>
之后错误消失了。但是,现在我又得到了一个:
无法连接到 SQL 服务器数据库
为什么会出现这个错误?是否有任何我遗漏并需要设置的配置?
提前致谢
尝试像这样设置您的默认角色管理器提供程序:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
...
</providers>
</roleManager>
您以后可以根据需要添加自定义提供程序...
您还必须设置数据库以启用成员资格和角色提供者。您必须为会员设置数据库:
如果您没有数据库,您可以在本地设置一些东西:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MembershipDB.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
然后设置成员资格:
<membership>
<providers>
<add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="false"
requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</membership>
最后是 roleProvider:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
<add connectionStringName="DefaultConnection" applicationName="/" name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</roleManager>
甚至更好:
我正在使用 MVC 5,我的视图中有以下代码:
@if (Roles.IsUserInRole("admin"))
{
<li class="@Html.IsSelected(controller: "Vacants")">
<a href="#"><i class="fa fa-edit"></i> <span class="nav-label">Vacants</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li class="@Html.IsSelected(action: "Create")"><a href="@Url.Action("Create", "Vacants")">Create New Vacatns</a></li>
<li class="@Html.IsSelected(action: "Morris")"><a href="@Url.Action("Edit", "Vacants")">Edit Vacant</a></li>
<li class="@Html.IsSelected(action: "Rickshaw")"><a href="@Url.Action("Delete", "Vacants")">Delete Vacant</a></li>
<li class="@Html.IsSelected(action: "Chartjs")"><a href="@Url.Action("History", "Vacants")">History</a></li>
</ul>
</li>
}
一开始,当我 运行 我的网站时,我收到一条错误消息,指出 RoleManager 功能未启用.所以,我在网络配置中启用它。
<system.web>
. . .
<roleManager enabled="true" />
</system.web>
之后错误消失了。但是,现在我又得到了一个:
无法连接到 SQL 服务器数据库
为什么会出现这个错误?是否有任何我遗漏并需要设置的配置?
提前致谢
尝试像这样设置您的默认角色管理器提供程序:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
...
</providers>
</roleManager>
您以后可以根据需要添加自定义提供程序...
您还必须设置数据库以启用成员资格和角色提供者。您必须为会员设置数据库:
如果您没有数据库,您可以在本地设置一些东西:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MembershipDB.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
然后设置成员资格:
<membership>
<providers>
<add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="false"
requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</membership>
最后是 roleProvider:
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
<add connectionStringName="DefaultConnection" applicationName="/" name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</providers>
</roleManager>
甚至更好: