用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,再通过 ...
随机推荐
- datanode启动不起来的各种原因
一般在数据节点的log日志信息里能找到导致启动不起来的原因. 1.Namenode和Datanode的NamenodeID不一致 描述:一般在集群多次重新格式化HDFS之后,或者刚安装时会碰到.日志信 ...
- 深刻理解iosBlock
深刻理解iosBlock ///一个控制器里的方法 - (void)setRefreshHeader { ACWeakSelf(self); self.tableView.mj_header = [M ...
- Git & github 使用指南
Git的安装: 1.下载 Git for windows下载网址:https://git-for-windows.github.io/ 2.安装 选择安装路径: 选择组件:默认 是否修改环境变量 : ...
- spring schedule定时任务(一):注解的方式
我所知道的java定时任务的几种常用方式: 1.spring schedule注解的方式: 2.spring schedule配置文件的方式: 3.java类继承TimerTask: 第一种方式的实现 ...
- VTK显示.vtk格式文件
void ReadandShowVTKFile () { vtkSmartPointer<vtkRenderer > aRenderer = vtkSmartPointer<vtkR ...
- java并发:Synchronized 原理
1.同步代码块: 反编译结果: monitorenter : 每个对象有一个监视器锁(monitor).当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取moni ...
- Linux下使用Nginx端口转发出现502错误的一种解决办法
今天圈里的一个朋友在配置完nfinx80端口转发到5000后,发现一个问题 问题描述: 正确配置了Nginx80端口转5000端口,在CentOS上把.Net core WebAPI站点上传到cent ...
- 异常-----Can't convert the date to string, because it is not known which parts of the date variable are in use. Use ?date, ?time or ?datetime built-in, or ?string.\u003Cformat> or ?string(format) built-
1.错误描述 五月 27, 2014 12:07:05 上午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- halcon c++ 异常处理
现象 Halcon导出的C++程序,try catch不到异常.在Halcon下可以正常Catch到异常. C++代码:try{ tuple_max(hv_Length, &hv_Max ...
- 未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Runtime.CompilerServices.TuppressIldasmAttribute”。已解决
"/"应用程序中的服务器错误. 未能从程序集"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77 ...