shiro框架学习-3- Shiro内置realm】的更多相关文章

1. shiro默认自带的realm和常见使用方法 realm作用:Shiro 从 Realm 获取安全数据 默认自带的realm:idae查看realm继承关系,有默认实现和自定义继承的realm 两个概念 principal : 主体的标示,可以有多个,但是需要具有唯一性,常见的有用户名,手机号,邮箱等 credential:凭证, 一般就是密码 所以一般我们说 principal + credential 就账号 + 密码 开发中,往往是自定义realm , 即集成 Authorizing…
1.  shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.apache.shiro.web.filter.mgt; import java.util.LinkedHashMap; import ja…
1. 自定义Realm基础 步骤: 创建一个类 ,继承AuthorizingRealm->AuthenticatingRealm->CachingRealm->Realm 重写授权方法 doGetAuthorizationInfo 重写认证方法 doGetAuthenticationInfo 方法: 当用户登陆的时候会调用 doGetAuthenticationInfo 进行权限校验的时候会调用: doGetAuthorizationInfo 对象介绍 UsernamePasswordT…
1. 什么是权限控制 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源, 理解两个概念:用户和资源,权限控制就是让指定的用户,只能操作指定的资源(CRUD),这里的用户 ,也包含机机接口的访问方.权限管理包括用户身份认证和授权两部分,简称认证授权.对于需要访问 控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问. 2.  什么是ACL和RBAC *…
一.shiro简介      shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证.权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 以下是你可以用 Apache Shiro所做的事情: (1)验证用户. (2)对用户执行访问控制,如: 判断用户是否拥有角色admin,判断用户是否拥有访问的权限. (3)在任何环境下使用Session API.例如CS程序. (4)可以使用多个用户数据源.例如一个是oracle用户库,另外一个是mys…
内置函数 1.abs()  求绝对值 2.all()    所有元素为真才返回真 all( [1,1,2,3,-1] ) 值为True 3.any()   所有元素为假才返回假  any([0,0,0,0,0])  值为FALSE 4.ascii()  返回括号内对象的唯一ASCII表现形式,好像没什么卵用 5.bin()    括号内Int型的十进制转换为二进制 6.hex()  括号内十进制转十六进制       6.oct()  括号内十进制转八进制       6.bool()   判断…
一.认证 1.配置web.xml   2.配置applicationContext.xml      在applicationContext.xml中配置一个bean,ID和上面的过滤器的名称一致.           securityManager: 这个属性是必须的. loginUrl: 没有登录的用户请求需要登录的页面时自动跳转到登录页面,不是必须的属性,不输入地址的话会自动寻找项目web项目的根目录下的"/login.jsp"页面. successUrl: 登录成功默认跳转页面…
函数.全局变量 写代码时注意的几点事项: 1.一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改,其次全局变量会一直占用系统内容. 2.函数里如果有多个return值,会把几个return值放到一个元组里 def hello(a,b,c,d): return a,b,c,dres=hello('1111','2222','3333','4444')print(res) 3.一个函数尽量只写一个功能 4.用简练的代码写高级的程序 例如:循环一个list…
内置对象(API): 日期 Date: getFullYear() 返回完整的4位的年份  如:2016 getMonth()    返回月份,从0开始 getDate()   返回当前月的第几天,当月的几号 getHours()   返回0-23的小时数字 getMinutes()  返回0-59的分钟数字 getSeconds()  返回0-59的秒数字 getTime()    返回毫秒数 getMilliseconds()  返回毫秒数字 getDay()       返回星期几 Arr…
Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包…
python内置函数 1.abs    求绝对值 2.all 判断迭代器中的所有数据是否都为true 如果可迭代的数据的所有数据都为true或可迭代的数据为空,返回True.否则返回False 3.any 判断迭代器中的是否有一个数据为true 如果可迭代的数据中有一个数据为true,返回True.否则返回False.可迭代的数据为空也返回False 4.bin    转换整数为一个二进制字符串(其他数据类型报错) 5.bool 转换一个数据为布尔值 bool是int的子类,如果参数为false…
今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE中,(测试为IE8及以下), window.eval()定义的变量不能在全局作用域生效,而ie有自己的一个函数为window.execScript()可以做到同样的效果.于是,在实际应用中,需要一个判断的函数,分别使用.如下: function evals(str){ if(typeof str!=…
jsp2 表达式语言的内置对象 使用方式${object.attributename} 或者${object["attributename"]} pageContext pageScope requestScope sessionScope applicationScope param 用于获取请求的参数值 paramValues 与param的区别是它获取的是数组类型的属性值 header 用于获取请求头的值 headerValues initParam 用于获取请求web应用的初始…
目前所有内置函数 http://www.runoob.com/python3/python3-built-in-functions.html *菜鸟教程* 内置函数分类 作用域相关globals().locals() globals()——获取全局变量的字典 locals()——获取执行本方法所在命名空间内的局部变量的字典 输入输出相关input().print() input()——输入 print()——输出 def print(self, *args, sep=' ', end='\n',…
函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # func_list[0]() # func_list[1]() # func_list[2]() for item in func_list: v = item() print(v) 函数可以当做参数进行传递,谁调用的函数返回值就给谁. def func(arg): print(arg) func(1)…
输出:print() 功能:输出打印 语法:print(*objects, sep=' ', end='\n', file=sys.stdout) 参数:objects----复数,表示可以一次输出多个对象.输出多个对象时,需要用,分隔.sep----用来间隔多个对象,默认是一个空格 end----用来设定以什么结尾.默认是换行符\n.file----要写入的文件对象. print('www','baidu','com',sep='.')----www.baidu.com 输入:input()…
angularjs的内置API函数有很多,如isString()判断给定的对象是否为字符串,如果是返回 true,反之返回false:isNumber()判断给定的对象是否为数字,如果是返回 true,反之返回false:uppercase()转换字符串为大写:lowercase()转换字符串为小写. 下面Insus.NET分别举个例子来实现:创建angularjs的app: 上面的app共用一个.但控制器分别创建,4个js文件: angularjs的控制器创建好后,我们就可以ASP.NET M…
如果某个实例foo有多个方法, 当对foo的每一个方法我们都需要使用try ... except ...进行包装的时候,内置函数getattr()可以用来精简代码. 1. getattr()的用法 # https://docs.python.org/2/library/functions.html#getattr getattr(object, name[, default]) Return the value of the named attribute of object. name mus…
1 语法 pow(x, y[, z]) x -- 数值表达式. y -- 数值表达式. z -- 数值表达式. 函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于pow(x,y) %z 注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float. >>> pow(10,2) 100 >>> import math >>> math.pow(10,2) 100.0 返回…
1 描述 把一个字符串当成语句执行 exec()  执行储存在字符串或文件中的 Python 语句,相比于  eval() , exec() 可以执行更复杂的 Python 代码. exec函数和eval函数类似,也是执行动态语句, 只不过eval函数只用于执行表达式求值,         而exec函数主要用于执行语句块. >>> eval("a=1+2") Traceback (most recent call last): File "<stdi…
并发程序设计之Future模式 一).使用Future模式的原因 当某一段程序提交了一个请求,期待得到一个答复,但服务程序对这个请求的处理可能很慢,在单线程的环境中,调用函数是同步的,必须等到服务程序返回结果后才能进行其他处理,在这段时间里,客户端一直处于等待状态. 二).Future模式 使用并发的设计思想,解决客户端发送请求到应用程序,等待响应数据时间过长的问题. 三).Future模式的核心结构 1.main: 系统启动类 作用:调用Client,发送请求. 2.client: 发送请求类…
什么是内置函数? 就是Python中已经写好了的函数,可以直接使用 内置函数图表: 以3.6.2为例 内置函数分类: 一.反射相关 1.hasattr() 2.getattr() 3.setattr() 4.delattr() 二.基础数据类型相关 1.和数字相关 (1)数据类型 a.bool() 把一个值转换成布尔值 li = ['',[],1,12,0] for i in li: print(bool(i)) # False # False # True # True # False b.i…
一.shell 的一些内置命令 常用的一内部命令有:echo.eval.exec.export.read.shift 1.echo命令-在屏幕中输出信息 1)说明 格式:echo args #<== 可以是字符串和变量的组合 说明:将echo命令后面args指定的字符串及变量等显示到标准输出 2).示例1 [root@web1 scripts]# echo zxg;echo shell #<---默认换行了 zxg shell [root@web1 scripts]# echo -n zxg;…
1.  JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(100) DEFAULT NULL, `password` varchar(100) DEFAULT NULL, `password_sa…
1. shiro进行认证授权时会查询数据库获取用户角色权限信息,每次登录都会去查询,这样对性能会又影响.可以设置缓存,查询时先去缓存中查找,缓存中没有再去数据库查询. 从shiro的架构图中可以看到有一个CacheManager——缓存管理器,可以使用 redis, hashmap, ehcache等作为缓存,可以在CacheManager中自定义. shiro中提供了对认证信息和授权信息的缓存,默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启的(因为授权的数据量大).Authen…
1. 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-j…
1.什么是会话session : 用户和程序直接的链接,程序可以根据session识别到哪个用户,和javaweb中的session类似 2. 什么是会话管理器SessionManager : 会话管理器管理所有subject的所有操作,是shiro的核心组件,它是一个接口,定义如下: public interface SessionManager { // 开启一个session Session start(SessionContext var1); // 根据指定的key获取session…
讲解权限角色控制 @RequiresRoles, @RequiresPermissions等注解的使用和编程式控制 配置文件的方式 使用ShiroConfig 注解方式 @RequiresRoles(value={"admin", "editor"}, logical= Logical.AND) 加了注解的接口的调用者需要具备admin 和 editor两个角色才能访问, AND表示两个同时成立 @RequiresPermissions (value={"…
一.入门程序 1.授权流程        2.授权的三种方式 (1)编程式: 通过写if/else 授权代码块完成. Subject subject = SecurityUtils.getSubject(); if(subject.hasRole("admin")) {      //有权限 } else {      //无权限 } (2)注解式: 通过在执行的Java方法上放置相应的注解完成. @RequiresRoles("admin") public voi…
对象(object): JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和 方法.JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象的属性: 反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: 能够在对象上执行的动作.例如,表单的“提交”(Submit),时间的“获取”(getYear)等: 对象定义: 使用对象前要先定义,如下使用数组对象: var objectName=new Ar…