使用[Authorize(Roles =“admin”)]属性时遇到问题。
[Authorize(Roles = "admin")]
public ActionResult GetAllLocations()
{
我收到以下错误
您必须调用“WebSecurity.InitializeDatabaseConnection”方法 在调用“WebSecurity”类的任何其他方法之前。这个电话 应放在站点根目录中的_AppStart.cshtml文件中。
我首先使用EF 5 Code使用我自己的数据库构建了一个MVC 4应用程序。
一点背景:
我创建了一个继承自的自定义成员资格提供程序 的MembershipProvider
我在本网站上看到了很多关于这个问题的问题,但是 没有找到答案。
在某些答案中,我了解了如何禁用会员提供商
<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>
这就是我实现自定义成员资格提供程序的方式
<membership defaultProvider="ATWMembershipProvider">
<providers>
<clear/>
<add name="ATMMembershipProvider" type="AroundTheWorldWeb.Infrastructure.AuthenticationProvider.ATMMembershipProvider"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
equiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10" applicationName="myApplication" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<remove name="AspNetSqlRoleProvider" />
<add name="AspNetSqlRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<!-- note: WebMatrix registers SimpleRoleProvider with name
'AspNetSqlRoleProvider'. I don't know why but i kept it. -->
</providers>
</roleManager>
答案 0 :(得分:0)
我通过从模板创建MVC 4来解决这个问题。我认为在选择Empty模板时没有加载某些DLL。所以我从模板创建它并覆盖所有Account的方法并且还实现了自定义成员和角色提供程序