我为自定义成员资格和角色提供程序开发了我自己的类。IIS和自定义成员资格提供程序+自定义角色提供程序的问题
一切工作在本地。尽管如此,在将解决方案部署到IIS进行测试之后,我的登录操作似乎可行(至少,操作验证了用户名+密码,并且用户似乎已通过身份验证),但每当我尝试访问用类似
[Authorize(Roles="Employee, Admin")]
我不断收到重定向到登录页面,就好像用户没有必要的角色(他的确如此)。
因此,在本地,应用程序成功验证用户并在执行操作之前检查经过身份验证的用户的角色(因此,我假设这两个类上的方法都是正确的),但在IIS上它看起来像角色提供程序无法正常工作。任何人都会知道我在哪里可能会出错,或者如何才能更好地了解我的问题?
在我的web.config:
<system.web>
(...)
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<membership defaultProvider="CustomMembershipProvider">
<providers>
<clear />
<add name="CustomMembershipProvider" type="MyApplication.Infrastructure.CustomMembershipProvider" connectionStringName="DBEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear />
<add name="CustomRoleProvider" type="MyApplication.Infrastructure.CustomRoleProvider" connectionStringName="DBEntities" applicationName="/" />
</providers>
</roleManager>
(...)
</system.web>
在此先感谢。
编辑:Aditional信息。
我只是修改我的行动anotation的一个简单[授权]和它的作品。所以,我认为身份验证的作用和问题必须与角色提供者相关联。
我对我的数据模型使用实体框架,con。字符串如下:
我设法注册一个用户,并登录使用新创建的帐户,这将意味着数据库连接和自定义成员资格提供工作正常(?)。 {@海峡}
A“@foreach(在Roles.GetRolesForUser(User.Identity.Name)字符串str)本地打印任务和部署时,不会显示任何信息。
Hows连接字符串? – Fals
您确定角色存在并且用户已分配到其角色? –
是的,只是双重检查。我用于本地测试的数据库实例与我在部署到IIS时使用的数据库实例相同。因此,如果角色存在并在当地得到认可,问题就不应该存在。 – user1987392