我有一个这样的业务场景,我一直用户表、权限表、角色表、用户角色关联表、权限角色表,我希望在登录之后更加用户找角色,根据角色找权限,如果存在的权限显示,否则不显示,有什么样好的实现代码逻辑吗

解决方案 »

  1.   

    学习 sql 语句关系连接(inner join)计算知识。
      

  2.   

    我之前的项目是这几张表的数据分别做了缓存,用户表数据缓存的时候  model有角色list和权限list,一次性加载到userlist里面做缓存,登陆的时候到缓存里面去提取,提取出来的UserModel是有角色属性和权限属性的,保存在session里面,需要做验证的地方,判断session
      

  3.   

    select p.权限名称
    from 用户表 u
    join 角色用户关联表 ru on ru.用户ID = u.ID
    join 角色权限表 rp on rp.角色ID = ru.角色ID
    join 权限表 p on p.ID = rp.权限ID
      

  4.   

    select p.权限名称
    from 用户表 u
    join 角色用户关联表 ru on ru.用户ID = u.ID
    join 角色权限表 rp on rp.角色ID = ru.角色ID
    join 权限表 p on p.ID = rp.权限ID
    where u.ID = 登录用户ID
      

  5.   

    参考:
    http://zzk.cnblogs.com/my/s/blogpost-p?Keywords=%E6%9D%83%E9%99%90
      

  6.   

    你既然能创建关联表。难道不明白sql的关联操作?
      

  7.   

    如果你采用MVC4的话,可以利用它的simplemembership做角色和权限的操作,
    推荐tystudio的源代码和说明:
    http://www.tystudio.net/2013/03/14/simplemembership-permission/
      

  8.   


    感谢,但SQL语句实现没问题,关键是如何在页面加载的时候与sql到的值对比并设置visble的值为true
    不是sql的问题,问题是sql得到的值与菜单节点对比对属性进行设置
    b
      

  9.   

    你理解错了..这不是显示隐藏的问题.是没有权限的模块根本就没有查询出来..所以不存在显示隐藏的问题..
    是的,你界面的html你设置隐藏或者不显示,其实还是看的到的,最好的办法是直接不加载出来