HTML5技术

Portal.MVC —— nopcommerce的简化版 - stoneniqiu(3)

字号+ 作者:H5之家 来源:H5之家 2015-12-04 12:16 我要评论( )

public class UserMap : PortalEntityTypeConfigurationDomain.User.User { public UserMap(){ToTable( );HasKey(n = n.Id);Property(n = n.Username).HasMaxLength( 100 );Property(n = n.Email).HasMaxLength( 50

public class UserMap : PortalEntityTypeConfiguration<Domain.User.User> { public UserMap() { ToTable(); HasKey(n => n.Id); Property(n => n.Username).HasMaxLength(100); Property(n => n.Email).HasMaxLength(500); Ignore(n => n.PasswordFormat); HasMany(c => c.UserRoles).WithMany().Map(m => m.ToTable()); } }

在PortalDb的OnModelCreating方法中加入。这样就会影响到数据库的设计。

OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new UserMap());
}

Nop的做法高级一些。反射找出所有的PortalEntityTypeConfiguration。一次性加入。这里大家可以自己去试

var typesToRegister = Assembly.GetExecutingAssembly().GetTypes() .Where(type => !String.IsNullOrEmpty(type.Namespace)) .Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(PortalEntityTypeConfiguration<>)); foreach (var type in typesToRegister) { dynamic configurationInstance = Activator.CreateInstance(type); modelBuilder.Configurations.Add(configurationInstance); }

权限管理:

默认设定了三种角色,Administrators,Admins,Employeer,他们分别配置了不同的权限,权限指定是在StandardPermissionProvider这个类中完成的,表示一个角色拥有哪些权限,Administrators拥有所有权限

new DefaultPermissionRecord { UserRoleSystemName = SystemUserRoleNames.Admin, PermissionRecords = new [] { AccessAdminPanel, SearchOrder, ManageUsers, } },

而权限验证的时候,在响应的Action上面加上AdminAuthorize和权限名称即可。

)] public ActionResult Index() { }

而在其内部是通过PermissionService来验证的:

HasAdminAccess(AuthorizationContext filterContext) { bool result = PermissionService.Authorize(Permission); return result; }

后台只有给用户设置角色的页面,我没做新增角色并分配权限的页面。不过这个实现起来也很简单了。如果你是更换数据库,这个时候设计到权限的初始化。调用下面的方法即可:

_permissionService.InstallPermissions(new StandardPermissionProvider());

当然前提是你先注入这个_permissionService。更多的代码细节大家可以去看源码。安装完成之后会有以下默认权限

 以上是关于工程的大体说明,欢迎大家拍砖。下面下载地址。数据文件需要附加。

 1:github地址:https://github.com/stoneniqiu/Portal.MVC 

 2:百度云:链接: 密码:f4wo

 数据库是Sql2008,附加不上,也可以自动生成。记得给自己添加用户。 默认用户名:stoneniqiu 密码 admin

关于分享

首先还是希望这个工程对大家有帮助,分享的过程是对过去知识一个梳理,存档入库,这种感觉就像是盛了一杯水倒掉了,进而我需要找新的水装满这个水杯;最后的最后还是宣传一下我们的读书群。我们加了很多技术群,但终归寂寥。但这个群是会持续分享读书心得和电子书的。人生路长,你需要一个持续的精神粮食来源。下面是我们第四期书山有路的投票结果,《数学之美》现在正在进行。群号:452450927

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 简化版的易企秀---可视化搭建滑屏应用 - gaogaolater

    简化版的易企秀---可视化搭建滑屏应用 - gaogaolater

    2015-11-24 18:32

  • HTML代码简化应遵循的原则_HTML教程

    HTML代码简化应遵循的原则_HTML教程

    2015-09-19 18:50

网友点评
e