当前位置: 首页 > news >正文

网站开发求职简历移动端页面模板

网站开发求职简历,移动端页面模板,阿里云网站建设 部署与发布,百度网络营销app下载文章目录一、 Shiro 简介二、 *Shiro 架构原理*三、 INI文件介绍四、 Shiro环境搭建及认证实现五、 第一个Shiro演示六、 授权七、 加密及凭证匹配器八、 自定义Realm九、 凭证匹配器一、 Shiro 简介 1 概述 权限体系在现代软件应用中有着非常重要的地位。一个应用如果没有权限… 文章目录一、 Shiro 简介二、 *Shiro 架构原理*三、 INI文件介绍四、 Shiro环境搭建及认证实现五、 第一个Shiro演示六、 授权七、 加密及凭证匹配器八、 自定义Realm九、 凭证匹配器一、 Shiro 简介 1 概述 权限体系在现代软件应用中有着非常重要的地位。一个应用如果没有权限体系都会显着这个系统“特别不安全”无论是传统的MIS系统还是互联网项目出于对业务数据和应用自身的安全都会设置自己的安全策略。 目前市场上专门的Java权限框架有Apache Shiro 和 Spring Security。相较于Spring Security 来说 Shiro更加老牌所以就先讲解Shiro在后面的阶段中讲解Spring Security。学习好Shiro对于以后市场上在出现新型权限框架的学习能带来很大便利。因为权限的概念是不变的变得是框架的实现方式。当然了对于第一次学习权限框架的人来说相较于权限框架的应用更难的就是权限方面的概念。 2 Shiro官方解释 中文:Apache Shiro是一个强大的并且简单使用的java权限框架.主要应用认证(Authentication),授权(Authorization),cryptography(加密),和Session Manager.Shiro具有简单易懂的API,使用Shiro可以快速并且简单的应用到任何应用中,无论是从最小的移动app到最大的企业级web应用都可以使用. 3 核心功能 在Shiro官网首页上占用了很大的篇幅说明了Shiro的核心功能。 Authentication 认证。如用户的登录。 Authorization 授权。用户是否有权限访问指定URL等。 Cryptography 密码学。如密码的加密。 Session Management Session 管理。 Web Integration Web集成。Shiro不依赖于容器。 二、 Shiro 架构原理 必须会。Shiro学习的重中之重。 1 第一行 第一行中示例出了一些语言。无论是什么语言都需要包含Subject 2 Subject 主体。每个用户登录成功后都会对应一个Subject对象所有用户信息都存放在Subject中。可以理解Subject就是Shiro提供的用户实体类。 3 Security Manager Shiro最大的容器此容器中包含了Shiro的绝大多数功能。在非Spring Boot项目中获取Security Manager 是编写代码的第一步。而在Spring Boot中已经帮助我们自动化配置了。 4 Authenticator 认证器。执行认证过程调用的组件。里面包含了认证策略。 5 Authorizer 授权器。执行授权时调用的组件。 6 Session Manager Shiro被Web集成后HttpSession对象会由Shiro的Session Manager进行管理。 7 Cache Manager 缓存管理。Shiro执行很多第三方缓存技术。例如EHCache等。 8 Session DAO 操作Session内容的组件。 9 Realms Shiro框架实现权限控制不依赖于数据库通过内置数据也可以实现权限控制。但是目前绝大多数应用的数据都存储在数据库中所以Shiro提供了Realms组件此组件的作用就是访问数据库。Shiro内置的访问数据库的代码通过简单配置就可以访问数据库也可以自定义Realms实现访问数据库逻辑绝大多数都这么做 三、 INI文件介绍 INI英文名称(InitializationFile) INI文件是Window系统配置文件的扩展名. Shiro的全局配置文件就是.ini文件ini中数据都是固定数据后面会用数据库中数据替代下面users和roles固定数据部分 .ini文件内容的语法和.properties类似都是keyvalue,value格式. INI文件中包含了四个部分 1 [main] 主体部分. 这部分配置类对象,或设置属性等操作. 内置了根对象securityManager注意对象名大小写。 [main] securityManager.属性值 keyvalue securityManager.对象属性com.bjsxt.pojo.People #后面值是字符串 peocom.bjsxt.pojo.People securityManager.对象属性$peo #出现$时才表示是引用对象2 [users] 定义用户,密码及用户可以具有的角色. [users] 用户名密码,角色1,角色2 #角色部分可以省略. zhangsanzs zhangsanzs,role1,role23 [roles] 定于角色具有的权限 [roles] 角色名权限名,权限名 role1user:insert,user:update role2insert,update role3user:*4 [urls] 定义哪个控制器被哪个过滤器过滤.Shiro内置很多过滤器。此部分主要在WEB应用中使用。 下图是官网上提供的Shiro内置Filter及名称。 anon不认证也可以访问。例如/admin/anon authc必须认证。 authcBasic没有参数时表示httpBasic认证(客户端认证方式)。 logout退出。 noSessionCreation新增Filter表示没有Session创建。 perms判断是有具有指定权限。例如/admin/user/perms[“per1”,”per2”]。必须同时具有给定权限才可以访问。如果只有一个权限可以省略双引号。 port限制端口。例如/admin/port[8081]。只要请求不是8081端口就重新发送URL到8081端口。 rest请求方式和权限的简便写法。例如/admin/rest[user]相当于/admin/** perms[user:方式]方式是http请求的方式post、get等。 roles判断是否具有指定权限。/admin/**roles[role1] ssl表示是安全的请求。协议为https user表示必须存在用户。 [urls] 控制器名称过滤器名称 /loginauthc /**anon四、 Shiro环境搭建及认证实现 1 认证流程 获取主体,通过主体Subject对象的login方法进行登录 把Subject中内容传递给Security Manager Security Manager内部组件Authenticator进行认证, 认证数据使用InI Realm,调用Ini文件中数据. 2 名词解释 Principal: 身份。用户名,邮箱,手机等能够唯一确认身份的信息. Credential: 凭证代表密码等。 AuthenticationInfo认证时存储认证信息。 五、 第一个Shiro演示 Shiro是不依赖于容器的所以建立一个普通的Maven项目就可以。 1 添加依赖 dependenciesdependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-core/artifactIdversion1.4.2/version/dependencydependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependency /dependencies2 新建配置文件 在resources下新建shiro.ini文件名称任意扩展名必须是ini。 [users] zhangsanzs lisils3 新建测试类 新建com.bjsxt.ShiroRun。 public class ShiroRun {public static void main(String[] args) {FactorySecurityManager factory new IniSecurityManagerFactory(classpath:shiro.ini);SecurityManager securityManager factory.getInstance();SecurityUtils.setSecurityManager(securityManager);Subject subject SecurityUtils.getSubject();//web项目时用户名和密码是客户端表单传递过来的用户名和密码。AuthenticationToken token new UsernamePasswordToken(admin, pwd);try {//login()方法没有返回值只能通过是否有异常判断是否登录成功。subject.login(token);System.out.println(登录成功);} catch (UnknownAccountException e) {System.out.println(账号不存在);} catch (IncorrectCredentialsException e) {System.out.println(密码错误);} catch (AuthenticationException e) {e.printStackTrace();}} }六、 授权 1 判断角色 1.1 修改配置文件 直接在密码后面添加用户包含的角色名即可。 [users] zhangsanzs,role1,role2 lisils1.2 添加代码 hasRole()通过返回值判断用户是否具有指定角色。 boolean hasRoleResult SecurityUtils.getSubject().hasRole(role1); System.out.println(result:hasRoleResult);2 判断权限 2.1 修改配置文件 [users] zhangsanzs,role1,role2 lisils [roles] role1permission1,permission22.2 添加测试代码 通过是否出现AuthenticationException异常控制是否有指定权限。 SecurityUtils.getSubject().checkPermission(permission);七、 加密及凭证匹配器 在实际开发中数据库中一些敏感信息经常会被加密存储。如用户密码等。 Shiro框架内嵌了很多加密算法。如MD5等。使用Shiro框架时可以很方便的实现加密功能。 String password smallming; //md5加密 Md5Hash md5Hash new Md5Hash(password); System.out.println(md5Hash.toHex()); //带盐的MD5加密。盐就是在原有字符串后面拼接盐形成新的字符串然后加密。 Md5Hash md5Hash2 new Md5Hash(password, bjsxt); System.out.println(md5Hash2); //无论是否加盐都可以很容易的被破解可以多次迭代加密保证数据安全性。 //第三个参数表示迭代加密次数 Md5Hash md5Hash3 new Md5Hash(password, bjsxt, 2); System.out.println(md5Hash3);//使用Md5的父类也也实现 SimpleHash simpleHash new SimpleHash(md5,password,bjsxt,2); System.out.println(simpleHash);八、 自定义Realm ShiroRun 代码不需要做任何变化。 1 自定义Realm类 在项目中新建com.bjsxt.realm.MyRealm public class MyRealm extends AuthenticatingRealm {Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {System.out.println(执行认证);//用户名String username token.getPrincipal().toString();//密码String pwd new String((char[])token.getCredentials());System.out.println(username pwd);//先从数据库查询select * from user where username? 查看用户名是否存在if(username.equals(admin)){//假设用户名为admin时能从数据库中查询出来//根据之前查询出来的用户信息获取密码。假设查询出来的密码是pwdString password pwd;//此处需要注意第二个参数是从数据库查询出来的密码而不是传递过来的密码。//第三个参数自定义。但是尽量不重复了。常直接使用用户名当做realname名字。AuthenticationInfo info new SimpleAuthenticationInfo(token.getPrincipal(),password,realmname);//shiro会判断从数据库查询出来的密码和客户端传递过来的密码是否一致。return info;}//返回null说明用户名不存在。return null;} }2 修改配置文件 在配置文件中添加下面内容 [main] myrealmcom.bjsxt.realm.MyRealm securityManager.realms$myrealm3 测试结果 在ShiroRun中修改用户名和密码当用户名和密码为admin、pwd时可以正常登录。 此时无论shiro.ini是否配置了[users]都按照Realm中配置的逻辑进行比较用户名和密码。 九、 凭证匹配器 在实际应用中数据库密码都是加密的。Shiro内置了凭证匹配器通过简单配置就可以实现明文数据和数据库中加密数据匹配的效果。 1 修改自定义Realm AuthenticationInfo 的构造方法由三个参数变成四个参数的。新增第三个参数表示加盐。 一般都是拿用户数据的id作为盐。 //密码必须是MD5加密后的密码 String password 7614fd642608ca0755b78d2b2c352e19; //假设id是从数据库中取出的id Long id 123L; //第三个参数是加密的盐 AuthenticationInfo info new SimpleAuthenticationInfo(token.getPrincipal(), password, ByteSource.Util.bytes(id) ,token.getPrincipal().toString());2 修改配置文件 在配置文件中配置凭证匹配器配置。 [main] md5CredentialsMatcherorg.apache.shiro.authc.credential.Md5CredentialsMatcher md5CredentialsMatcher.hashIterations2myrealmcom.bjsxt.shiro.MyRealm myrealm.credentialsMatcher$md5CredentialsMatcher securityManager.realms$myrealm
http://www.ihoyoo.com/news/13509.html

相关文章:

  • 北京网站设计联系方式重庆巫溪网站建设
  • 在iis搭建网站wordpress 发布插件
  • 钟表网站模板大数据
  • 有没有做网站源代码 修改的安康市网站开发
  • 电商网站设计价格兄弟们给个能用的网站
  • 黑龙江建设网官方网站特种作业火车采集器 wordpress
  • 电子商务网站的数据库怎么做如何做一个宣传片
  • 深圳 建网站深圳网站建设是什么
  • 设计类的网站目前基金会网站做的比较好的
  • 做一个新公司网站要多少钱办一个购物网站要多少钱
  • 网站首页效果图网络策划工作内容
  • 建站公司网站源码社区建网站 几个链接
  • 嘉兴网站专业上海建站
  • 去国外做赌钱网站网站建设优化托管
  • 制作和淘宝商城一样网站上海广告公司工资
  • 做电影网站如何寻找资源企业展厅设计公司的区别在哪
  • 做旅游海报哪个网站好免费的深圳网站开发建设培训机构
  • dw网站建设的基本流程免费注册公司邮箱
  • 百度关键词网站排名优化软件做的网站很卡是什么原因
  • 怎么建立企业网站平台成都到西安多少公里路
  • p2p网站建设的步骤过程动态交互图表制作
  • 茶叶公司网站源码网站建设及报价方案
  • 物流网站制作商城网站功能文档
  • 响应式网站 谷歌 移动网站做网店装修的网站有哪些内容
  • 企业网站建设中在方案设计上郑州 网站建设的公司
  • 加强心理咨询网站的建设国外购物网站建设
  • 儿童网站模板免费下载网上做任务佣金高的网站
  • 公司网站首页怎么设置免费搭网站
  • 苏州网站公司小程序代理需要多少钱
  • 网站开发的接口文档建设网站需要的步骤