加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 帮助MVC身份验证/授权解决方案

发布时间:2020-12-16 03:47:59 所属栏目:asp.Net 来源:网络整理
导读:我正在构建一个MVC 3应用程序,需要找到一个管理身份验证和授权的好解决方案.我使用过Membership,在这种情况下我不想使用它 – 我更喜欢使用自己的设计和表格.但是,如果合适的话,我愿意使用内置接口实现我的自定义逻辑. 这是我的要求: 用户可以是一个或多个
我正在构建一个MVC 3应用程序,需要找到一个管理身份验证和授权的好解决方案.我使用过Membership,在这种情况下我不想使用它 – 我更喜欢使用自己的设计和表格.但是,如果合适的话,我愿意使用内置接口实现我的自定义逻辑.

这是我的要求:

>用户可以是一个或多个角色的一部分.
>角色可以映射到任意数量的“权限”(多对多).权限类似于“可以编辑其他用户的帖子”.
>每个控制器操作可以允许访问一个或多个角色(或者对于公共页面可以不需要授权).
>我还需要“功能级别”控制哪些角色可以查看/更新视图上的各种元素.可以使用权限来驱动这些角色.
>作为旁注,我可能还允许会员使用他们的Facebook和/或Twitter帐户进行注册.但这可以独立于我的自定义成员身份实现,如果这是合适的(即在注册时创建自定义用户,然后将其绑定到FB / Twitter帐户).

我确定之前有人做过这样的事情.但基于我在这个主题上看到的十几个博客和SO帖子,没有一个解决方案真的适合这个,它似乎并不存在.但是我很有可能无法将各个部分组合在一起,并且适当的东西正在盯着我.

例如,我已经阅读了一些关于“基于声明”的身份验证与“基于角色”的身份验证,但不确定我是否了解足够的差异来进行呼叫,也不确定天气是否需要ASP.NET成员身份.我还读到了通过实现IPrincipal和IIdentity以及使用动作过滤器来驱动控制器访问来构建自定义成员资格,但我没有找到任何全面的指南来实现这一点,而且我仍然相当绿色的动作过滤器.

我也不确定是否应该使用一些.NET的内置控件进行注册,身份验证,忘记密码等等.我的本能不是,因为我通常喜欢自己构建这些,我也不确定如果他们可以在自定义设置中工作.但如果我错了,请告诉我.

提前致谢.

解决方法

请记住,ASP.NET身份验证/授权框架有两个不同的部分.第一个是具有成员资格和角色提供者的前端,然后是使用 SqlMembershipProvider和 SqlRoleProvider的后端.

根据我的个人经验,我发现编写自己的MembershipProvider和RoleProvider自定义版本最简单.我认为它将满足您的每一个要求.

更新:Jared问我:“似乎实现MembershipProvider和RoleProvider增加了我将永远不需要/使用的大量开销(和绒毛).这仍然是要走的路吗?这样做我有什么好处?”

我认为如果您使用身份验证/授权框架,您可以利用许多内置的东西.例如,您可以根据[Authorize(Roles =“DefaultUser”)]等角色为控制器设置方法授权.如果需要,您也可以直接在视图中放置这种检查代码,例如:

<% if (Request.IsAuthenticated) { %> 
<p>Only authenticated users see this.</p>
<% } %>

此外,身份验证/授权负责设置角色/用户cookie和加密它们的繁琐工作.如果你自己动手,那么这就是你必须自己做的事情.

Jared还希望,“用户可以成为一个或多个角色的一部分.”并且“角色可以映射到任意数量的”权限“(多对多).权限类似于”可以编辑其他用户的帖子“.

我认为角色和权限是一回事.因此,单个用户可以拥有多个角色和权限.像“CanEditPosts”“Admin”等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读