用session做权限控制
一个需要用户进行登录的网站,基本上都会设置用户权限,对不同的用户进行权限控制。例如:一个网站肯定会有一个管理员管理着普通的用户,普通的用户不可能对其他用户有着类似于增删改查等操作,这样网站都乱了……,一个网站做基本要做好逻辑结构,还要管理好所有用户的权限,不同种用户对应着不同的权限,让这些用户有一个层级的概念。
在网上搜索权限控制会接触到shiro,这个可以说是一个安全框架,用来做权限控制非常方便的,这个以后再看。做权限控制我最先想到的使用session来做,session对象,一个用户一次登录对应一个session,这样我们可以把用户的权限从数据库中查出来,保存在当前这个用户的session对象中,这样在打开每个网页的时候,首先判断当前用户权限是什么,属于什么等级,在页面上做出判断,哪些内容是可以显示给当前用户,哪些不可以显示,这样有些需要权限等级高的操作页面内容就可以选择显示给用户了。
在用户表中有一个字段用来记录着当前用户的权限(其实这里应该记录用户的权限列表,为什么?因为用户的权限总是有些交叉的,比如说设置一个普通用户对应的的权限可以进行的操作有修改登录密码,管理员对应的权限也可以对用户的密码进行修改,如果单一的设置普通用户的权限为1,管理员权限为5,我们在后台判断权限为5的用户可以修改密码,那普通用户的修改密码的操作就不能实现了,最好的方法就是每个用户对应一个权限列表,权限列表中对应着几种不同的权限编码,这样对于前面说的那种权限的交叉就可以很好的解决了)这里为了实现简单的用户权限控制,并没有采用权限列表这种方式,只是简单的设置某个权限为几(一个int类型的值)。
说了这么多,我们有一个用户表,表中记录着用户的基本信息,还有一个字段用来记录用户的权限标号(一个int类型的值存储),从1-5权限从小到大对应,一个登录页面,一个主页(登录成功跳转到主页),在用户输入用户名和密码的时候,会去数据库中查找有无此用户名和密码对应的用户,返回回来,我们在执行完这个操作的时候,再定义一个方法:在用户表中把当前登录用户的权限标号查出来,放到session中即可。
下面是一个ssm三个框架整合的项目,在mybatis的xml的配置文件中分别定义了登录查询的sql语句和查询权限的sql语句
在controller中写入逻辑代码,登录查询之后调用查询用户权限,这里的方法都是由spring注入的,确实很好用,通说现在都用spring全家桶了……
if中判断数据库查出来的是否有数据,也就是用户名密码是否正确,正确查出权限标号存入session,跳转到主页index页面,否则(用户名密码输入错误)返回login登录页面
在jsp页面中用jstl标签判断当前权限,选择显示页面中的信息,如果条件成立执行标签中的内容(显示内容),不成立不显示,就是判断用户权限标号是否是5
一个a用户,还有一个b用户,a用户权限是1,b用户权限是5,运行项目,登录
a用户不显示,b用户显示左面分类栏(不放图了,想想就可以了,项目放在github上还在写,)
也可以用model来存储这个权限标号,后期会改成model,这样代码会简单些。
用session做权限控制的更多相关文章
- request.getRemoteUser() Spring Security做权限控制后
一. request.getRemoteUser();//获取当前缓存的用户,比如Spring Security做权限控制后就会将用户登录名缓存到这里 request.getRemoteAddr(); ...
- Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于Spring Cloud Data Flow这里不多介绍,有兴趣可以看下面的文章.本文主要介绍如何整合Dat ...
- 基于Django做权限控制
一.权限信息初始化 二.中间件操作 三.自定义标签 补充:数据表设计,源码下载,其它
- 在excel worksheet中添加button 和对Excel workbook做权限控制相关的新知识
添加button在worksheet中 1. Shapes Object (Excel) Reference:http://technet.microsoft.com/zh-cn/library/ff ...
- 基于flask做权限控制
和Django实现的原理类似,有时间补充
- 权限控制和OAuth
目录 1 权限控制是什么 1.1 ACL 1.2 RBAC 1.2.1 名词术语 1.2.2 RBAC定义 1.2.3 RBAC分类 1.2.3.1 RBAC0 1.2.3.2 RBAC1 1.2.3 ...
- ASP.NET MVC 和 WebForm的权限控制
今天主要讲一下对于ASP.NET的页面级权限控制 数据结构:用户表.角色表.权限表.角色权限派生表 为用户添加权限的数据配置后, 自定义类对MVC继承Controller 对其内置方法Initiali ...
- asp.net权限控制的方式
我们在使用asp.net开发Web程序的时候经常需要进行一些权限控制,如: 限制用户没有登陆就无法查看一些页面,又或者是说登陆之后如果不是管理员,或是没有响应的权限就无法进行相关的操作. 实现的方法有 ...
- Spring Boot 2.X(十八):集成 Spring Security-登录认证和权限控制
前言 在企业项目开发中,对系统的安全和权限控制往往是必需的,常见的安全框架有 Spring Security.Apache Shiro 等.本文主要简单介绍一下 Spring Security,再通过 ...
随机推荐
- Mapreuduce实现网络数据包的清洗工作
处理后的数据可直接放到hive或者mapreduce程序来统计网络数据流的信息,比如当前实现的是比较简单的http的Get请求的统计 第一个mapreduce:将时间.十六进制包头信息提取出来,并放在 ...
- 借鉴mini2440的usb-wifi工具集在Beagleboard上移植无线网卡
配置minicom: sudo yum install minicom sudo minicom -s 选择Serial port setup,此时所示光标在"Change which se ...
- WebApi 参数绑定方法
WebAPI 2参数绑定方法 简单类型参数 Example 1: Sending a simple parameter in the Url 01 02 03 04 05 06 07 08 09 ...
- CDN网络架构
CDN(content delivery network 内容分发网络) 本质上就是提供缓存,使得用户总是能访问离他最近的服务器,akamai是世界上的第一家做CDN的公司 实例:构建CDN分发网络架 ...
- linux 安全基本防护 用户提权 ssh访问控制
linu安全应用 信息安全分类: 物理安全:主机/机房环境 系统安全:操作系统 应用安全:各种网络服务,应用程序 网络安全:网络访问控制,防火墙规则 数据安全:信息的备份与恢复,加密解密 管理安全:保 ...
- mysql学习笔记02 CRUD操作
添加数据insert into 表名(字段列表) values(对应字段的列表值) 查询数据 select *from 表名 where 条件select *from 表名 where 1条件 1表示 ...
- 《实战Nginx》读书笔记
最近今天读了一本书叫做<实战Nginx:取代Apache的高性能Web服务器>,看后对Nginx 了解了不少.但是还有很多地方不是很了解.不过此书可以作为一本参考手册来使用,里面的讲解很详 ...
- DML触发器1
数据库触发器是特殊的存储程序.通常不直接调用它们,而是由数据库的事件触发. 触发器分类: >DML触发器 >instead-of触发器 >系统事件触发器,还可以是DDL 一. DML ...
- 利用Eclipse中的Maven构建Web项目(一)
利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...
- Docker 小记 — MySQL 与 Redis 配置
前言 本篇随笔是继 "Docker Engine" 与 "Compose & Swarm" 之后的一个实例补充,初衷是记录测试环境中的一次 MySQL ...