用户角色权限分析

来源:互联网 发布:seo报价 编辑:程序博客网 时间:2024/06/14 19:11
·认证:系统提供用于识别用户身份的功能,通常登陆功能就是认证功能--让系统知道你是谁。
·授权:系统授予用户可以访问哪些功能的许可--让系统知道你在做什么。


·常见的权限控制方式:

    --URL拦截权限控制(基于拦截器/过滤器实现,创建并实现拦截器/过滤器的功能)

    左侧的菜单|
          |----->>请求  -->(设置拦截器)   -->Action -- Service -- Dao -- 数据库
    右侧的按钮|
    
设置拦截器/过滤器,拦截客户端发送的请求,在拦截器中判断用户是否具有权限
    ·有权限,放行
    ·(如果伪造请求)没有权限,跳转到权限不足的提示页面

    --方法注解权限控制(基于代理代理对象实现,为Action创建的代理对象)

    左侧的菜单|
          |----->>请求 -->Action(设置注解) -- Service -- Dao -- 数据库
    右侧的按钮|

在Action中使用注解
EG:
public class StaffAction(){
    
    @HasPrivilege("String")//执行这个方法,要求当前用户必须具有"String"这个权限
    public String deleteBatch(){
        //调用Service批量删除
        ...    
    }
}

@HasPrivilege("String")只是一个标识,框架会将加入注解的Action创建代理对象,由代理对象进行权限的校验,
·校验通过,通过反射,调用目标对象的方法。
·校验不通过,框架抛出权限不足异常。


··权限表(auth_function)
··角色表(role)
··用户表(user)
··角色权限关系表(role_function)
··用户角色关系表(user_role)

&&  用户需要权限才具有访问的功能,并对数据进行操作。给用户分配角色,给角色相应的权限,
&&  这样用户与权限之间的关系就比较清晰,角色是权限的集合,引入角色是为了方便授权,
&&  用户、角色、权限三者之间的关系:

一个用户可以有多种角色
一个角色可以被多个用户使用
···用户与角色    ·-·-·-多对多的关系

一个角色可以有多个权限
一个权限可以被多个角色使用
···角色与权限    ·-·-·-多对多的关系


创建两张中间表:角色权限关系表(role_function)AND 用户角色关系表(user_role)

角色权限关系表:
-- 角色id  --权限id
    1    1
    1    2
    2    1
    2    2    
    2    3

用户角色关系表
-- 用户id  --角色id
    1    1
    2    1
    2    2
    



原创粉丝点击