一个需要用户进行登录的网站,基本上都会设置用户权限,对不同的用户进行权限控制。例如:一个网站肯定会有一个管理员管理着普通的用户,普通的用户不可能对其他用户有着类似于增删改查等操作,这样网站都乱了……,一个网站做基本要做好逻辑结构,还要管理好所有用户的权限,不同种用户对应着不同的权限,让这些用户有一个层级的概念。

在网上搜索权限控制会接触到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做权限控制的更多相关文章

  1. request.getRemoteUser() Spring Security做权限控制后

    一. request.getRemoteUser();//获取当前缓存的用户,比如Spring Security做权限控制后就会将用户登录名缓存到这里 request.getRemoteAddr(); ...

  2. Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于Spring Cloud Data Flow这里不多介绍,有兴趣可以看下面的文章.本文主要介绍如何整合Dat ...

  3. 基于Django做权限控制

    一.权限信息初始化 二.中间件操作 三.自定义标签 补充:数据表设计,源码下载,其它

  4. 在excel worksheet中添加button 和对Excel workbook做权限控制相关的新知识

    添加button在worksheet中 1. Shapes Object (Excel) Reference:http://technet.microsoft.com/zh-cn/library/ff ...

  5. 基于flask做权限控制

    和Django实现的原理类似,有时间补充

  6. 权限控制和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 ...

  7. ASP.NET MVC 和 WebForm的权限控制

    今天主要讲一下对于ASP.NET的页面级权限控制 数据结构:用户表.角色表.权限表.角色权限派生表 为用户添加权限的数据配置后, 自定义类对MVC继承Controller 对其内置方法Initiali ...

  8. asp.net权限控制的方式

    我们在使用asp.net开发Web程序的时候经常需要进行一些权限控制,如: 限制用户没有登陆就无法查看一些页面,又或者是说登陆之后如果不是管理员,或是没有响应的权限就无法进行相关的操作. 实现的方法有 ...

  9. Spring Boot 2.X(十八):集成 Spring Security-登录认证和权限控制

    前言 在企业项目开发中,对系统的安全和权限控制往往是必需的,常见的安全框架有 Spring Security.Apache Shiro 等.本文主要简单介绍一下 Spring Security,再通过 ...

随机推荐

  1. JavaScript中基本数据类型和引用数据类型的区别

    1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...

  2. 帮Python找“对象”

    引言:你一定会感叹:Python还缺找对象? 毕竟"一切皆对象"是人家Python的哲学理念.不过,Python  允许程序员以纯粹的面向过程的方式来使用它,所以人们有时会忽视它那 ...

  3. android的Live架构

    MVC.MVP.MVVM的选择 一开始我们在这几种框架上的选择上就没花太多的心思,因为他们都只是为了实现清晰的分层逻辑,差异化的地方无非是讲UI逻辑.交互逻辑.数据绑定逻辑.业务逻辑堆放在那一层的问题 ...

  4. Java基本数据类型的长度范围

    1.Java基本数据类型的长度范围代码 /** * @Title:DataTypeLength.java * @Package:com.you.dao * @Description:Java数据类型长 ...

  5. java.text.ParseException: Unparseable date: "2015-06-09 hh:56:19"

    1.错误描述 [DEBUG:]2015-06-09 16:56:19,520 [-------------------transcation start!--------------] java.te ...

  6. 修改MyEclipse行数的颜色

    修改MyEclipse行数的颜色 1.未修改前,行数的颜色 2.依次选择"Window--->Preferences" 3.选择"General--->Edi ...

  7. Linux查询一台机器的IP地址和其对应的域名

    Linux查询一台机器的IP地址和其对应的域名 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ nslookup > 127.0.0.1 Server: ...

  8. Java Breakpoint

    1.错误描述 Java Breakpoint Unable to install breakpoint in com.you.humb.web.commom.dao.impl.ExportDaoImp ...

  9. 芝麻HTTP:PhantomJS的安装

    PhantomJS是一个无界面的.可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作.CSS选择器.JSON.Canvas以及SVG. Selenium支持PhantomJS,这 ...

  10. Java并发编程笔记4-线程池

    我们使用线程的时候就去创建一个线程,但是就会有一个问题: 如果并发的线程数量非常多,而且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会导致大大降低系统的效率,因为频繁创建线程和销毁线 ...