网站后台系统权限部分实现

  基本上所有网站都有后台管理系统。系统根据业务划分成不同的系统角色。而每个角色肯定是拥有着不同的权限。这个权限就根据登录后功能菜单的多少来体现。

  那么这是如何实现的呢?

  在刚开始接触这方面的时候,意识到权限问题,自己随手写的练手项目是将帐号表中设置一个权限字段。比如1代表超级管理员,2代表普通用户种种。用户登录进来的时候,页面里用jstl标签判断权限类型,渲染不同的静态页面。这种方法确实是可行的。但是如果后期需要增加菜单,那么就需要更改代码,或者是增加角色,也需要更改代码。如果后期有一点点变动,都需要重新对代码进行更改。

  后来,看到了另一个项目,权限是这么实现的。

  用于角色权限的一般设计有五张表,权限表、角色表、用户表、用户角色表、角色权限表。

  1.权限表 一般设计有 id pid name code zindex page description generatemenu 字段,用来生成菜单树结构。

  2.角色表 用于存储角色类型,如 超级管理员角色、普通用户等。

  3.用户表 实际上就是User表,用于存储用户信息。

  4.用户角色表 是角色表和用户表的关联表,多对多的关系。一个角色可对应于多个用户,一个用户也可以对应于多个角色。

  5.角色权限表 是角色表和权限表的关联表,多对多的关系。一个角色拥有多个权限,一个权限也可以被多个角色拥有。

  如果存在资源表 则 再加 资源表和资源角色表共七张表,不过一般是上述五表。

  系统菜单一般是怎么实现的呢?

_____________________________________________

  这里涉及到apache shiro框架。

  //apache shiro简要介绍  

  它的核心功能有:认证、授权、会话管理、加密。

  l shiro框架认证流程

Application Code:应用程序代码,由开发人员负责开发的

Subject:框架提供的接口,代表当前用户对象

SecurityManager:框架提供的接口,代表安全管理器对象

Realm:可以开发人员编写,框架也提供一些,类似于DAO,用于访问权限数据

  使用过程:

1.maven工程的话,导入依赖

2.web.xml中配置spring整合的过滤器shiroFilter  对应的class为DelegatingFilterProxy

3.spring中配置bean id为shiroFilter

4.配置安全管理器

5.login方法进行登录认证

6.自定义Realm,并注入给安全管理器

public class BOSRealm extends AuthorizingRealm{

@Autowired

private IUserDao userDao;

//认证方法

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

System.out.println("realm中的认证方法执行了。。。。");

UsernamePasswordToken mytoken = (UsernamePasswordToken)token;

String username = mytoken.getUsername();

//根据用户名查询数据库中的密码

User user = userDao.findUserByUserName(username);

if(user == null){

//用户名不存在

return null;

}

//如果能查询到,再由框架比对数据库中查询到的密码和页面提交的密码是否一致

AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName());

return info;

}

//授权方法

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

// TODO Auto-generated method stub

return null;

}

以上是登录认证(参考黑马视频bos项目文档)

_____________________________________________

而授权是怎么完成的呢?

权限拦截一般有几种方法,上述在spring中根据规则过滤是一种,还有方法注解是一种,页面shiro标签库拦截也是一种。一般使用spring过滤。

路径是这样:用户登录进来后,ztree会根据用户角色查询角色权限表,生成功能菜单树。当进入某一页面时,页面有删除按钮,如果前台页面没有进行判断是否显示,那么点击之后,系统会根据applicationContext.xml配置的过滤规则进行拦截,如果是perms拦截,进入到自定义Realm中,执行授权方法

授权方法是给用户授予权限,执行完毕后。shiro会自动判断该用户是否拥有 配置的权限,若没有则抛出未授权异常。

——————————————————————————————————————————

但是每次访问都会执行授权方法,产生效率问题。

这里采用 ehcache 来缓存权限数据

ehcache是专门缓存插件,可以缓存Java对象,提高系统性能。

使用方法:

1.导入依赖

2.提供ehcache配置文件。

3.spring配置缓存管理器对象,并注入给安全管理器。

——————————————————————————————————————

补张shiro图

原文地址:https://www.cnblogs.com/Begodpath/p/9202863.html

时间: 2024-08-29 22:29:58

网站后台系统权限部分实现的相关文章

基于Vue实现后台系统权限控制

原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通前端项目除了数据交互更频繁以外,还有一个特别的需求就是对用户的权限控制,那么如何在一个Vue应用中实现权限控制呢?下面是我的一点经验. 权限控制是什么 在权限的世界里服务端提供的一切都是资源,资源可以由请求方法+请求地址来描述,权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配

基于SSH的网站后台系统定做

一,关于我们我们是一支有着多位长期处于一线开发岗位工程师的团队,我们有着多年的开发经验,是一只经验丰富的专业团队,我们为客户提供各专业高质量的毕业设计定做服务,致力于为即将毕业的同学提供毕业设计指导.毕设代做.毕设定制等一站式服务.他们在软件工程的各个领域积累了丰富的经验,保证服务水平. 联系我们:.扣.扣.号(幺零三贰三七幺贰幺) 我们会根据您提出的需求,完全按照您交代的任务书来进行完全基于原创而定制的设计产品,做出来的成品设计完全基于原创,绝非市场上其他的玳做同行们的修改模板的劣质产品. 二

HTML入门(三)后台系统显示页面_框架标签

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>网站后台系统显示页面</title> </head> <--!>行划分</--!> <frameset rows="20%, *"> <frame src="top.html" /> <--!

电商网站前台与后台系统架构

之前做的一直在做网站的后台系统: 这些都是本网站的后台系统. 下面看下前台系统是如何搭建的: 因为现在客户端有pc端和移动端,所以将客户端不直接与数据库连接,而是采用服务端跟数据库连接,每个独立的客户端可以单独调用服务的接口,这样方便部署和管理. 为什么要这样做呢? 在互联网系统开发当中,我们一般都是采用了分层的方式来架构系统,但是为什么我们需要分层进行架构呢? 采用分层架构有利于系统的维护,系统的扩展.这其实就是系统的可维护性和可扩展性. 分层就是按照功能把系统切分细分,细分之后就能分布式部署

如何做到 Laravel 配置可以网站后台配置【社交系统ThinkSNS+研发日记四】

距离上一次分享差不多一周了,本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置. 需求场景 首先,ThinkSNS+ 作为一个用户可以使用的「社交系统」和开源网站程序一样拥有后台,有一些配置,Laravel 是要求写在 /config/*.php 的配置文件中的,例如 app.name.app.debug 等信息的配置,以及 Jobs 的驱动配置,广播系统的配置等,我们都搬到了网站后台,用户安装后可以不用修改配置文件的情况下镜像配置. 如何覆盖

社交系统ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台配置

什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案. 本文分享下利用 Laravel 的 Bootstrapping 达到网站后台设置 laravel 配置. 需求场景 首先,ThinkSNS+ 作为一个用户可以使用的「社交系统」和开源网站程序一样拥有后台,有一些配置,Laravel 是要求写在 /config/*.php 的配置文件中的,例如 app.name.app.debug 等信息的配置,以及 Jo

destoon 给超级管理员系统权限(管理员管理,日志管理等)

destoon 后台某些系统权限除了网站创始人之外其他超管事没有权限的,现需要给其他超级管理员添加普通管理员的权限. 1.首先  admin/global.func.php  admin_check函数 ,去掉admin  这样超管才能访问 ?file=admin } else if($_admin == 1) {?     //if(in_array($file, array('admin', 'setting', 'module', 'area', 'database', 'template

PD003-NET通用后台系统

PD003-NET通用后台系统 开发语言.Net 成品成品 前端技术jquery 数据库sql server .net 通用后台框架 详细信息 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用,提供了OA.CRM.CMS的原型实例,适合快速构建中小型互联网及行业Web系统,也可用来学习. Framework 业务无关的底层通用机制及功能 -Model基类:提供数据传输和底层的最基本的基类及接口 -DAL底层:基于EF c

网狐源码下载网狐V5、网狐6603网站后台管理

网狐源码下载网狐V5.网狐6603网站后台管理 冲值系统 2.1 实卡管理: 冲值以生成会员卡类型,附送游戏币的模式.在此模块可进行点卡类型,点卡生成,以及点卡库存明细查询. 概览图: PS:所用源码要为完整源码,本次 所以源码来自网狐源码下载maliwl.com l 类型管理:必须先生成实卡的类型.设置实卡类型的名称,价格,赠付的金币,以及赠送的会员等级,以及此充值卡的用户和服务权限.(注:用户和服务权限慎用.) 问题点:类型里面的赠送金币和会员卡生成的赠送金币是否是重复.这样误导不知道以哪个