nTier应用程序中的.Net会员资格
说我有一个ASP.Net MVC应用程序,这个应用程序(UI)引用一个业务逻辑层(BLL),BLL引用我的数据访问层(DAL).
我正在使用自定义会员和角色提供商进行授权. 我正在尝试确定哪些层需要引用我的会员提供商. 在MVC中,您可以通过以下方式执行授权检查: [Authorize(Roles = "SomeRoleName")] public ActionResult Index() { //do something } 在我的BLL中,我可能想查看一个用户是否也在一个角色: public static bool IsRoleEditor(User user,Role userRole) { bool retValue = false; if (user.Application.AppID == UserRole.Application.AppID) { if (Roles.IsUserInRole("ModifyRoles")) { retValue = true; } return retValue; } 如果我这样做,我将不得不引用并实例化两层的Membership类.这是建筑这样的应用程序的正确方法吗?似乎很多冗余. 因为我有一个BLL,我不要使用“[Authorize(Roles =”SomeRoleName“)]”属性,而是从MVC代码内调用一个BLL函数来检查用户是否在一个角色?如果我这样做,MVC仍然需要参考会员提供商进行身份验证,无论如何,要利用登录和其他ASP控件,对吧? 我是否离开基地,走向错误的方向? 解决方法
在我看来,这是会员/角色设计的弱点.
我将围绕这一点,例如在分布式n层应用程序中对UI和BLL层进行基于角色的授权,将会暴露BLL层中暴露相关位(GetRolesForUser等)和通过在服务器上调用RoleProvider实现. 然后通过调用BLL公开的服务来实现客户端上的一个自定义RoleProvider. 以这种方式,UI层和BLL层都共享相同的RoleProvider. UI层可以使用当前用户角色的知识来改进UI(例如隐藏/禁用与未授权的功能相对应的UI控件),并且BLL可以确保用户不能执行他们没有授权的业务逻辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在html.LabelFor中显示一些文本?
- 从ASP.NET应用程序删除目录返回到新会话
- asp.net-web-api – 间歇性“无法加载类型”System.Net.Htt
- asp.net-mvc – 从/到POCO对象的knockoutjs映射
- asp.net-mvc – ELMAH – MVC 3 – 403 – 禁止:访问被拒绝
- asp.net – IIS动态压缩失败
- asp.net – 任何人都有解决Internet上的“n项剩余”问题的想
- asp.net-mvc-4 – 如何在mvc布局中添加徽标?
- asp.net – 更改事件和IE8的jQuery问题
- asp.net – IIS中的静态压缩不适用于htm,js文件
- asp.net-mvc – 从Asp.Net Mvc应用程序找不到Dat
- asp.net-mvc – 如何在ASP.NET MVC中创建旋转广告
- asp.net-mvc – 刷新IdentityServer4客户端中的访
- asp.net – 微软的AJAX Toolkit与jQuery
- asp.net mvc 设置一个action的访问人数,达到上线
- asp.net – Azure WebJob超时配置设置
- ASP.NET MVC默认项目结构和脚本文件夹
- asp.net-mvc – 在Razor视图中调用异步方法
- asp.net-mvc – 帮助MVC身份验证/授权解决方案
- asp.net-mvc – mvc编辑器模板结果被缓存