首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在新的MVC 4 Internet模板中使用simplemembership进行基于角色的身份验证

在新的MVC 4 Internet模板中使用simplemembership进行基于角色的身份验证
EN

Stack Overflow用户
提问于 2012-09-04 13:21:12
回答 1查看 62.7K关注 0票数 53

我喜欢MVC4Internet模板中新的simplemembership功能,该功能可以链接到VS2012RTM中用于外部登录的OAuth。在大多数情况下,身份验证功能都是有效的。然而,即使在这上面花费了超过8个小时,我仍然无法实现基于角色的授权来在我的控制器上工作。事实证明,SimpleMembership一点也不简单。

我已经搜索了stackoverflow,谷歌了,并阅读了John Galloway的最新版本,尝试了许多建议,但仍然无法解决这个问题。这一切都是从获取Sql连接错误开始的,当连接字符串和其他一切正常时,无法找出原因。花了几个小时才弄清楚是Roles类导致了问题。

控制器上的Authorize属性对基本身份验证的作用与以前一样。但是,每当我尝试使用角色时,它都会给出sql连接错误(因为它会恢复到旧的DefaultRolesProvider,它试图连接到默认的SqlExpress aspnetdb文件,但失败了)。所以就像这样:

代码语言:javascript
复制
[Authorize(Roles="admin")]

不起作用。如果我返回到旧的asp.net成员提供程序,它将工作,但然后我失去了简单的数据库表,令牌基础的确认和恢复,更安全的密码哈希,更重要的是通过OAuth的外部登录。

在代码和剃刀视图中唯一可以工作的是

代码语言:javascript
复制
User.IsInRole("admin")

这对于菜单项之类的是可以的,但在控制器中的每个单独的Action中实现起来都很麻烦(而且我不喜欢它一次只测试一个角色)。

我将非常感谢任何指导来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2013-02-28 23:30:40

当我将我的web应用程序从VS2010/MVC3迁移到VS2012/MVC4时,也遇到了同样的问题。

而且不能让InitializeSimpleMembership工作。

我发现把这段代码添加到你的web.config中是有好处的:

代码语言:javascript
复制
  <appSettings>
    <add key="enableSimpleMembership" value="false" />
  </appSettings>

一切都像以前一样运行良好。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12257232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档