simpleroleprovider松散的ApplicationName后登录



我正在创建一个VS10 ASP应用程序。.NET MVC4 .NET框架我使用VS10提供的模型用于WEB ASP。asp.net MVC 4应用程序。创建之后,在没有对应用模型进行任何更改的情况下,我使用ASP.net Administration工具创建成员和角色,一切顺利。我打算用

角色。IsUserInRole

函数将特定用户组的Taylor视图。但是登录后,该函数不工作也不工作

(角色:=

授权rolename)

应用于控制器中的特定函数。原因:我验证了ApplicationName在每个testuser登录后丢失(我不知道如何:尚未对源进行更改),SimpleRoleProvider不允许以编程方式修改当前ApplicationName值(引发特定异常)。是否有可能在不改变角色提供者的情况下克服这个问题?

开箱外,MVC4简单成员没有正确设置。我在这里详细说明了一个类似的问题

你真正需要做的是

1)删除过滤器文件夹下的文件。

2)在application_start()上初始化simplememmembership。最佳位置是在AuthConfig文件中,该文件由global.asax调用

3)从account controller中删除initialize simple membership属性

如果你看看上面链接中被接受的解决方案,如果你需要的话,我会给出更多的细节。

我想我已经找到了一个解释我的问题的方法。在MSDN中,在关于SimpleMembershipProvider类中的ApplicationName属性的章节中,我发现了这个注释:

如果SimpleMembershipProvider类已经通过调用WebSecurity。如果InitializeDatabaseConnection方法,则不支持此属性,并将抛出NotSupportedException异常。但是,如果WebSecurity。InitializeDatabaseConnection方法未被调用,并且如果您已将站点配置为使用标准ASP。. NET成员资格提供程序时,此属性将传递给标准成员资格提供程序。有关更多信息,请参阅SimpleMembershipProvider类概述。

一开始我并不清楚。但经过多次测试,我想我已经明白了。simplemembrshipprovider有一个强大但受限的目标,它在MVC 4模板中的Account Controller中的实现就是一个例子。它不关心ApplicationName,因为它覆盖了这个必要性,但是,通过这种行为,它限制了对需要ApplicationName set的"Roles"函数的访问。为了证实我的假设和对笔记的理解,我删除了:

<InitializeSimpleMembership()> 

来自会计总监。一切都很顺利,我可以使用我需要的所有功能。我必须改变控制器中的一些内容,因为我不能再使用WebMatrix了,但改变并不难。如果有人对我的结论有任何意见,欢迎提出来。

最新更新