0

我正在使用 VS10 ASP.NET MVC4 .NET Framework 4 创建一个应用程序。我将 VS10 提供的模型用于 WEB ASP.NET MVC 4 应用程序。创建后,应用模型没有任何变化,我使用 ASP.net 管理工具创建成员和角色,一切正常。我打算用

Roles.IsUserInRole

功能为特定用户组定制视图。但是登录后,该功能不起作用也不起作用

授权(角色:=“角色名称”)

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

4

2 回答 2

0

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

如果 SimpleMembershipProvider 类已使用对 WebSecurity.InitializeDatabaseConnection 方法的调用进行了初始化,则不支持此属性并将引发 NotSupportedException 异常。但是,如果尚未调用 WebSecurity.InitializeDatabaseConnection 方法,并且您已将站点配置为使用标准 ASP.NET 成员资格提供程序,则此属性将传递给标准成员资格提供程序。有关详细信息,请参阅 SimpleMembershipProvider 类概述。

起初我并不清楚。但经过多次测试,我认为有未解之谜。SimpleMemebrshipProvider 有一个强大但受限的目标,它在 MVC 4 模板中的 Account Controller 中的实现就是一个例子。它不关心 ApplicationName,因为它忽略了这种必要性,但是,通过这种行为,它限制了对需要设置 ApplicationName 的“角色”功能的访问。为了确认我的假设和对笔记的不理解,我删除了:

<InitializeSimpleMembership()> 

从帐户控制器。一切顺利,我能够使用我需要的所有功能。我不得不更改控制器中的某些内容,因为我不能再使用 WebMatrix,但更改并没有那么难。如果有人对我的结论有任何意见,他/她将受到欢迎

于 2013-06-22T06:30:00.630 回答
0

开箱即用,MVC4 简单成员设置不正确。我在这里详细介绍了一个类似的问题

你基本上需要做的是

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

2) 在 application_start() 上初始化 SimpleMembership。最好的地方是在由 global.asax 调用的 AuthConfig 文件中

3) 从帐户控制器中删除初始化简单成员资格属性

如果您查看上述链接中接受的解决方案,如果您需要,我会提供更多详细信息。

于 2013-06-06T09:37:45.590 回答