角色表:
ApplicationId RoleId RoleName LoweredRoleName描述 3F96CA96-CCB3-4780-8038-AF3CCE0BD4F2 9B5B798D-E56E-4144-A12C-7C8945FCB413管理员管理员
UsersInRoles:
UserId RoleId 58974159-E60E-4185-AD00-F8024C7C5974 9B5B798D-E56E-4144-A12C-7C8945FCB413
Q1:为什么以下代码不允许我进入此控制器操作?
[Authorize]
[Authorize(Roles = "Admin")] // !!! This is keeping me out...commented out I can get in but I'm set as "Admin" and have tried lower case "admin" as well.
public ActionResult SomeMethod()
{}
Q1a:是否还有另一个角色提供程序连接字符串,我必须在Web配置中设置才能使其正常工作?
答案 0 :(得分:2)
您能否发布关于成员资格和角色提供商的部分web.config。这听起来好像您的应用程序名称设置不正确。
<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="Your Application Name here" />
</providers>
</roleManager>
修改强> 您的应用程序名称未设置。它需要设置为某个东西,它必须与数据库表中的应用程序名称匹配:aspnet_Applications
如果您的网络配置有applicationName =“TestApp”/&gt;那么你的数据库表也需要在aspnet_Applications表中有TestApp
答案 1 :(得分:0)
确保您的ApplicationId与您可能正在使用不同的applicationId相同,请查看here以获取更多信息
答案 2 :(得分:0)
请尝试以下代码以确定您的问题:
public ActionResult SomeMethod() {
if (!User.IsInRole("Admin"))
throw new SecurityException("User is not an admin.");
}
如果您收到异常,则表示您的会员提供商存在问题,或者您不在admin
角色,或者您的应用程序ID配置不同,如下所示。
这些是一些可能性。