权限

基于角色的权限控制在springMVC框架中的实现

旧城冷巷雨未停 提交于 2019-12-06 00:03:04
前言:常规来说,我们在做权限的时候,基本就是这么几个要素:用户、角色、资源(权限点)。角色本质上是给资源分组,这样不同的group具有不同的权限来控制用户更方便一些。 一般情况下,web应用的权限控制都会设计成把请求路径(也就是url,实质是uri)作为权限点来赋予角色不同的权限,在拦截器获取用户信息后,根据用户的角色找到对应的权限点,并与当前的请求路径匹配,最终返回是否具有权限。 那么,今天我想说的是,在一般的web项目中,在spring(MVC)框架下,我们是怎么灵活使用spring框架本身完成权限校验的。 对于一个web请求来说,我们都能得到一个HttpServletRequest对象,那么这个request对象有很多信息决定了这个请求的唯一性:请求路径uri、请求方法(常用rest风格的GET/POST/PUT/DELETE...)、请求参数params、请求头header(主要包括Content-Type、Referer、User-Agent、Cookie)等,可惜传统的权限控制实现方式是比较局限的,而且严重限制了制定rest风格的url。 所以,springmvc是怎么将当前request对象和所有controller的请求进行匹配的呢?我们可以利用这个机制实现权限控制。 OK,源码分析正式开始: part I springmvc继承了servlet的核心处理类:

一种基于annotation的Spring-mvc权限控制方法

半腔热情 提交于 2019-12-05 03:18:27
##简介## 本文介绍一种采用annotation来对spring-mvc进行权限控制的方法. 通过枚举类来定义权限项. 将annotation标注到需要控制权限的spring-mvc方法上. 然后,在spring-mvc中定义全局过滤器, 过滤所有spring-mvc方法, 查看方法上的权限annotation信息, 以此对权限进行控制. 程序源代码: https://github.com/eagle0445/sample/ ##优点## 编写比较方便, 在需要控制权限的方法上进行annotation的标注即可, ide能够对annotation进行识别支持. 查看权限配置比较方便, 因为annotation就在方法上, 不用去其他地方翻看. 实现方式比较简单. ##具体实现## ###1.建立权限枚举类### 建立权限枚举类型, 用于描述权限的种类, 包含了权限的名称. 每个枚举值中包含了权限中文名称和权限索引值(即权限位). (思考:是否可以直接用中文名称作为枚举值的名称,我在其他程序已经用了中文枚举名称了,暂时没有遇到问题) <!-- lang: java --> public enum AuthorityType{ // 包含了枚举的中文名称, 枚举的索引值 WORKER("增删改查员工", 1), SALES_ORDER_CREATE("创建订单", 6), SALES

过了毕业季,没有找到工作的码农该怎么办呢?

拥有回忆 提交于 2019-12-03 14:59:19
毕业季已经过去,可还有一部分的毕业生没有找到工作。那这些毕业生该怎么办呢? 大家不要气馁,工作还是要继续找的。大家也可以利用这段时间再补充一点自己的知识。可以去学一些 java 快速开发平台。 java 快速开发平台,顾名思义就是一个可以二次开发的平台。里面的功能是封装好。 iMatrix 是一个企业级的 JAVA 快速开发平台,采用了先进的 SOA 体系架构和标准规范 , 并提供了层次分明的 MVC 多层结构,实现了平台内部以及同其他系统接口的松散耦合。 iMatrix 平台 有效地屏蔽底层 J2EE 的复杂技术,将很多通用功能做成了系统级的组件,用户能够直接使用。同时平台对底层复杂的技术细节做了大量的封装,降低了技术的使用难度,并且提供项目开发模板、规范和示例,让用户无需从零开始,一般用户通过系统提供的 WEB 图形化表单、流程定制界面,即能快速、便捷的完成应用模块的配置和开发。同完全手工编码的开发模式比较,在 iMatrix 平台基础上进行二次开发可以节省 80% 的代码开发量,并且开发初学者通过简单的培训即能快速上手,以最快的速度掌握开发的方法和技巧,降低用户的实施成本。 学习一些平台,在找工作的时候也有一定的作用。也许你学的平台正好是该公司现在用的平台。也让面试官感觉你懂得的知识比较广泛。让你在许多的面试者中脱颖而出。平台也不止这一个,小编只是在这里举一个 java

【初印象】Android权限变量表

风流意气都作罢 提交于 2019-12-03 06:13:39
作为一个还在Android门口徜徉的小白,我不急于直接深入到Android里面去,而是现在门口绕一绕,挖点感兴趣的东西出来。 其实每个人第一次用Android的时,都会发现一个Android特殊的机制,就是提示你这个Apk有哪些权限,你是否确认安装,也许大多数人由于交互原因,就直接去点击安装了,不会仔细一项项看里面的权限记录 但是这些权限是谁指定的呢?当然是Apk自己指定的 权限是干嘛的呢?如果我要了某个权限,我会记录到一个叫做AndroidManifest.xml的文件中,系统会根据填写的权限,来阻止或允许你的应用行为,而填写这些权限的值就很重要: 如下这些权限值,其实也可以在 http://developer.android.com/reference/android/Manifest.permission.html 找到: Constants String ACCESS_CHECKIN_PROPERTIES Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded. String ACCESS_COARSE_LOCATION Allows an app to access approximate location

iMatrix平台中组织结构树标签acsTags:tree用法

会有一股神秘感。 提交于 2019-12-02 07:19:41
1 组织结构树标签 ( acsTags :tree) 1.1 引入 js <script type="text/javascript" src="${resourcesCtx}/widgets/ jstree/jquery.jstree.js"></script> 1.2 用法 1.2.1 开发系统中添加以下资源;查询是否已加入编号为 tag_tree 的资源,若没有则添加 编号 :tag_tree, 名称 : 标签树资源 , 路径 :/portal/tree.action 编号 :tag_search_tree, 名称 : 标签树查询资源 , 路径 : /portal / search -tree.action 将该资源分给“普通用户”角色 1.2.2 在项目的 web.xml 中加入 action 的过滤器: <filter> <filter-name>struts2Filter</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <!-- 树插件 --> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>

Laravel5学生成绩管理系统-03-登陆登出功能-权限-中间件

可紊 提交于 2019-12-01 18:39:11
这一节,我们完成登录登出的功能, 在路由中设置中间件, 过滤一些非法请求,关于 中间件 、 用户授权 请参靠官方文档,如果是新手,强烈建议先看下文档然后再开始下面的工作。 #知识学习: HTTP 中间件 HTTP 中间件提供了一个方便的机制来过滤进入应用程序的 HTTP 请求,例如,Laravel 本身使用中间件来验证用户的身份,如果用户未通过身份验证,中间件将会把用户导向登录页面,反之,当用户通过了身份验证,中间件将会通过此请求并接着往下执行。 当然,除了身份验证之外,中间件也可以被用来运行各式各样的任务,CORS 中间件负责替所有即将离开程序的响应加入适当的标头。而日志中间件则可以记录所有传入应用程序的请求。 Laravel 框架已经内置了一些中间件,包括维护、身份验证、CSRF 保护,等等。所有的中间件都放在 app/Http/Middleware 目录内。 注册中间件 # 全局中间件 # 若是希望每个 HTTP 请求都经过一个中间件,只要将中间件的类加入到 app/Http/Kernel.php 的 $middleware 属性清单列表中。 为路由指派中间件 # 如果你要指派中间件给特定路由,你得先在 app/Http/Kernel.php 给中间件设置一个好记的键,默认情况下,这个文件内的 $routeMiddleware 属性已包含了 Laravel 目前设置的中间件

IIS+PHP环境下文件上传无法访问问题

余生颓废 提交于 2019-11-29 06:53:29
在Windows下配置PHP运行环境,一个选择就是IIS FastCGI,有时会遇到Apache下没有的权限问题,文件上传是经常遇到的一个。在讲解决方案之前,我们先来分析一下原因。 ###IIS运行时的Windows用户组 在IIS FastCGI方式运行时,我们通过浏览器请求的Web资源有2类,一个是经由php_cgi.exe产生的内容,一部分是静态资源,由IIS返回给用户。这2类用户有区别,前者是IIS_IUSERS,后者是Authenticated User或者是Anonymous。 ###PHP上传流程 PHP上传一般分两个步骤,第一步,是上传到一个upload_tmp_dir,第二步一般是这样 move_uploaded_file($file["tmp_name"], $filePath) 。而移动文件是会保留其权限设置。 ###“由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面”问题的产生 如果我们没有在php.ini设置upload_tmp_dir属性,IIS默认的这个temp目录就是C:\Windows\Temp。而我们需要的2类用户对这个目录下的文件是缺乏相应的权限的。 #解决方案 在默认的temp目录设置相应权限,右键->属性->权限->添加。这种方案是不安全的,不推荐。 设置php.ini相应属性

spring security 3.2.0.M1 方法级别教程 基于注解——第二部分

戏子无情 提交于 2019-11-28 12:20:33
基于方法级别的权限控制 spring security通过用户角色的URL来限制访问,通常是用来保护Web应用程序的。然而,它也可以用在方法和类上,使编码或配置错误不允许后门进入受限制的数据。构建安全系统深入而不弄乱代码。它还允许额外的灵活性,如允许用户只能访问与他们相关的信息,而不是其他用户的信息。 下面的代码演示了基于方法基本的一部分Spring Security的展示,这个应用程序还演示各种功能和技术在后面的文章中说明。 基本环境 本示例基于前面搭建的环境,详情请点击 。。。 applicationContext-security.xml 修改applicationContext-security.xml以支持最小的spring security运行环境。 配置如下: <!-- lang: xml --> <debug/> <http auto-config="true" use-expressions="true"> <intercept-url pattern="/**" access="permitAll"/> </http> <authentication-manager> <authentication-provider> <user-service> <user name="user" password="user" authorities="ROLE_USER"

android签名机制(1)——了解签名

醉酒当歌 提交于 2019-11-27 09:55:36
android中所有运行在设备上的应用都必须要签名,这是系统提供的一种安全认证机制。 下面以问答形式来自我认识下,后面在根据部分内容来进一步研究: 1.为什么用签名机制?如果不签名呢? 为了防止app被反编译替换原有的程序,如果有相同包名的应用存在,新的apk则不能安装在设备上。 就算被反编译,在没有原有私钥的情况,重新签名生成的apk和原来的apk的标志是不同的。如此,被修改的apk如果安装在原来的设备上,则会提示: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 如果不签名呢? 直接安装到设备上,则也提示: 从上面可以有个很简易的认知,如果不签名或者签名不对,则不能安装在设备上。 如果应用androidmenifast.xml中加了 android:sharedUserId="android.uid.system" 时,要用平台签名,否则提示 : 更多安装异常可以查找相关信息。 2.平台签名?签名有很多种么? 有很多种。在android源码目录build\target\product\security,有如下几种签名密钥。 *.pk8表示的是private key---私钥 *.x509.pem理解为公钥 这里的platform.*即为平台签名的私钥和公钥,加密方式是非对称加密。 从上图可以看出有好几种的签名

spring security 3.2.0.M1 方法级别教程 基于注解——第一部分

爱⌒轻易说出口 提交于 2019-11-27 07:56:45
说明 一直在用spring security与shiro权限框架。最近spring security升级到了3.2.0.M1,所以更新了一下,看一下是否还是可以按照老方法使用。 基于方法级别的权限控制 spring security通过用户角色的URL来限制访问,通常是用来保护Web应用程序的。然而,它也可以用在方法和类上,使编码或配置错误不允许后门进入受限制的数据。构建安全系统深入而不弄乱代码。它还允许额外的灵活性,如允许用户只能访问与他们相关的信息,而不是其他用户的信息。 下面的代码演示了基于方法基本的一部分Spring Security的展示,这个应用程序还演示各种功能和技术在后面的文章中说明。 初始环境与工具 下面的环境与工具有想必大家开发JAVA的同学不会陌生吧!我就不介绍它们的安装了。 * SDK * MAVEN * myeclipse 或者 IDEA (我本人习惯于IDEA,这个教程就用它了) 基本结构 运行idea创建一个maven项目 创建完成后补全目录结构,如下: 运用maven 添加依赖 什么依赖大家就自己看吧,具体代码如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi