权限管理

上来不说废话,直接进入正题

权限:需要一个权限表 

 create table privilege
(
 id varchar(40) primary key,
 name varchar(240) not null unique,
 description varchar(255)
);

资源表:看这个资源拥有哪些权限

create table resource
(
 id varchar(40) primary key,
 uri varchar(255) not null unique,
 description varchar(255),
 privilege_id varchar(40),
 constraint privilege_id_FK foreign key(privilege_id) references privilege(id)
 
);

角色表:一个系统中的角色

create table role
(
 id varchar(40) primary key,
 name varchar(40) not null unique,
 description varchar(255)
 
);

用户表:记录用户数据

create table user
(
 id varchar(40) primary key,
 username varchar(40) not null,
 password varchar(40) not null,
 description varchar(255)
);

 

因为角色和权限是多对多的关系,一个角色可以拥有多个权限,同时,一个权限也可以赋予多个角色,所以要在角色和权限之间建立一张中间表

create table role_privilege
(
 role_id varchar(40),
 privilege_id varchar(40),
 primary key(role_id,privilege_id),
 constraint role_id_FK foreign key(role_id) references role(id),
 constraint privilege_id_FK1 foreign key(privilege_id) references privilege(id)
);

 

一个用户可以拥有多个角色,一个角色也可以被多个用户拥有,所以用户和角色还是多对多的关系,也需要建立中间表

create table user_role
(
 user_id varchar(40),
 role_id varchar(40),
 primary key(user_id,role_id),
 constraint user_id_FK foreign key(user_id) references user(id),
 constraint role_id_FK1 foreign key(role_id) references role(id)
);

 

权限的重点在于表的设计,设计好表,再写dao层,service层,然后控制层,再view层

 

 

 

//过滤器--:过滤用户未登录就访问权限资源
public class SecurityFilter implements Filter {

 @Override
 public void destroy() {
 }

 @Override
 public void doFilter(ServletRequest req, ServletResponse resp,
   FilterChain chain) throws IOException, ServletException {
  
  HttpServletRequest request=(HttpServletRequest) req;
  HttpServletResponse response=(HttpServletResponse) resp;
  
  //1.检查用户是否已登录
  User user=(User) request.getSession().getAttribute("user");
  
  //2.没登录,登陆去
  if (null==user) {
   request.setAttribute("message","请先登录");
   request.getRequestDispatcher("/message.jsp").forward(request, response);
   return;
  }
  
  //3.得到用户想访问的资源
  String uri=request.getRequestURI();
  
  
  //4.得到访问该资源需要的权限
  SecurityService service=new SecurityService();
  Resource r=service.findResource(uri);
  
  if (null==r) {//资源为空,表示资源不被权限限制
   chain.doFilter(request, response);
   return;
  }
  Privilege required_privilege=r.getPrivilege();//得到用户访问资源的权限
  
  //5.判断用户是否有相应的权限
  
  List<Privilege> list=service.getUserAllPrivilege(user.getId());//得到用户所有权限
  
  if (!list.contains(required_privilege)) {
   //自定义对象比较,必须重写equals方法和hashcode方法
   
   //6.没有权限,则提示用户权限不足,联系管理员
   request.setAttribute("message","对不起,你没有权限访问该资源");
   request.getRequestDispatcher("/message.jsp").forward(request, response);
   return;
  }
  
  
  //7.如果有,则放行
  chain.doFilter(request, response);
 }

 @Override
 public void init(FilterConfig arg0) throws ServletException {
 }

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux授权管理权限是Linux系统中对用户和组进行权限管理的过程。通过授权管理,可以决定用户可以访问哪些文件和执行哪些操作。 在Linux中,权限管理主要涉及三个方面:用户管理、组管理和权限管理。 用户管理涉及到创建、删除和管理用户账户。每个用户都有一个唯一的用户名和密码,可以根据需要分配不同的权限给用户。这样,每个用户就可以根据其权限来访问和操作文件。 组管理是将用户分组的过程。通过将用户分组,可以更方便地管理用户的权限。可以将用户分配到不同的组中,然后为每个组设置相应的权限。这样,用户可以继承其所属组的权限。 权限管理是指确定用户对文件或目录的操作权限。在Linux中,每个文件或目录都有三种基本权限:读取权限、写入权限和执行权限。这些权限可以被分配给用户、用户组和其他用户。通过设置不同的权限,可以控制用户对文件的访问和操作。 需要注意的是,Linux系统中有一个特殊的用户——root用户。root用户是系统管理员,拥有最高权限。通过root用户,可以执行系统级别的操作。然而,root用户的权限应该谨慎使用,因为错误的操作可能导致系统的不稳定或安全性问题。 总结起来,Linux授权管理权限是通过用户管理、组管理和权限管理来确定用户对文件和操作的访问权限。这是Linux中非常重要和基础的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值