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

国外自助建站系统手机 网站 微信 源码

国外自助建站系统,手机 网站 微信 源码,企业互联网推广,哪里有做家教网站的shiro在应用程序中的使用是用Subject为入口的#xff0c; 最终subject委托给真正的管理者ShiroSecurityMannager Realm是Shiro获得身份认证信息和来源信息的地方(所以这里是我们实现的)我们只要继承他的实现类重写方法就好了#xff0c;AuthorizingRealm 身份认证过程 自定义… shiro在应用程序中的使用是用Subject为入口的 最终subject委托给真正的管理者ShiroSecurityMannager Realm是Shiro获得身份认证信息和来源信息的地方(所以这里是我们实现的)我们只要继承他的实现类重写方法就好了AuthorizingRealm  身份认证过程 自定义realm代码 public class myRealm extends AuthorizingRealm {//realm的名称Overridepublic String getName() {// TODO Auto-generated method stubreturn myRealm;}//验证token是否是有效的tokenOverridepublic boolean supports(AuthenticationToken arg0) {// TODO Auto-generated method stubreturn arg0 instanceof UsernamePasswordToken;}//授权获得用户权限信息的方法Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {SimpleAuthorizationInfo infonew SimpleAuthorizationInfo();info.addRole(321);info.addRole(3332);info.addStringPermission(333);info.addStringPermission(555);info.addObjectPermission(new WildcardPermission(44));// TODO Auto-generated method stubreturn info;}//认证获取用户身份信息的方法Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {UsernamePasswordToken loginToken(UsernamePasswordToken)token;String passwordnew String(loginToken.getPassword());System.out.println(password);System.out.println(loginToken.getUsername());if(loginToken.getUsername()zhangpassword.equals(123)){}else{throw new IncorrectCredentialsException();}// TODO Auto-generated method stubSimpleAuthenticationInfo info new SimpleAuthenticationInfo(loginToken.getUsername(),password,getName());return info;}}doGetAuthorizationInfo方法是进行用户授权的时候调用的方法 用户获得当前用户的授权信息 先不管他doGetAuthenticationInfo是当我们调用subject.login进行认证的方法 这个方法的参数token就是我们subject.login调用的这里面我们就可以查询数据库对用户名和密码进行认证 如果认证成功将用户信息封装成SimpleAuthenticationInfo 认证失败根据几种情况抛出异常常见的如DisabledAccountException禁用的帐号、LockedAccountException锁定的帐号UnknownAccountException错误的帐号ExcessiveAttemptsException登录失败次数过多、IncorrectCredentialsException 错误的凭证ExpiredCredentialsException过期的凭证等 shiro.ini配置 #声明一个realm myRealm1com.liqiang.realm.myRealm #这里就是我们注入realm的地方 securityManager.realms$myRealm1实现身份认证的代码 Test public void testHelloworld() { //1、获取SecurityManager工厂此处使用Ini配置文件初始化SecurityManager Factoryorg.apache.shiro.mgt.SecurityManager factory new IniSecurityManagerFactory(classpath:shiro.ini); //2、得到SecurityManager实例 并绑定给SecurityUtils org.apache.shiro.mgt.SecurityManager securityManager factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); //3、得到Subject及创建用户名/密码身份验证Token即用户身份/凭证 Subject subject SecurityUtils.getSubject(); UsernamePasswordToken token new UsernamePasswordToken(zhang, 123); try { //4、登录即身份验证 subject.login(token); } catch (AuthenticationException e) { //5、身份验证失败 } subject.logout(); } 上面我们调用sbuject.login(token) 这个token封装了前端用户输入的用户名和密码   授权验证  当我们通过subject.isPermitted(user:update) 当我们判断当前用户是否拥有user:update这个权限代码的时候 会调用我们ream的 doGetAuthorizationInfo 方法获得授权信息。我们在这里面就是根据用户信息查询数据将认证信息封装 SimpleAuthorizationInfo 返回回去 //授权获得用户权限信息的方法Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {SimpleAuthorizationInfo infonew SimpleAuthorizationInfo();info.addRole(321);info.addRole(3332);info.addStringPermission(333);info.addStringPermission(555);info.addObjectPermission(new WildcardPermission(44));// TODO Auto-generated method stubreturn info;} 这里通过查询数据库知道用户有321  332  这2个角色 和 333   555   44  这几个权限 WildcardPermission 这个又是什么意思呢。。通过addStringPermission 默认是用Permission的实现类封装的 如果我们又定义就用我们的封装 没有定义就用默认的WildcardPermission最终将他们保存到一个集合里面如 public class MyPermission implements Permission {String permissionCode;public MyPermission(String name) {permissionCodename;}Overridepublic boolean implies(Permission permission) {//自定义比较// TODO Auto-generated method stubreturn false;}} 当我们调用subject.isPermitted(user:update)会调用将指令传达给 SecurityManager SecurityManager 再将指令传达给授权管理类Authorizer Authorizer会通过reaml获得授权信息SimpleAuthorizationInfo如果我们返回的授权信息拥有角色 会调用RolePermissionResolver实现类的方法 将角色的权限追加到SimpleAuthorizationInfo(默认是没有实现的)如 public class MyRolePermissionResolver implements RolePermissionResolver{Overridepublic CollectionPermission resolvePermissionsInRole(String roleString) {// TODO Auto-generated method stubreturn Arrays.asList((Permission)new MyPermission(menu:*)); } 这里面应该是根据角色查询权限  最终 遍历SimpleAuthorizationInfo的权限信息 (我们的权限信息都封装Permission接口实现类 调用implies方法进行比较 如果比较成功返回true 表示授权通过)自定义Permission的好处就是我们可以自定义匹配规则 注入自定义Permission和RolePerminssion的配置 [main] authorizerorg.apache.shiro.authz.ModularRealmAuthorizer securityManager.authorizer$authorizer #自定义rolePermissionResolver rolePermissionResolvercom.liqiang.permissionResolver.MyRolePermissionResolver authorizer.rolePermissionResolver$rolePermissionResolver securityManager.authorizer$authorizer permissionResolvercom.liqiang.permissionResolver.MyPermissionResolver authorizer.permissionResolver$permissionResolver #声明一个realm myRealm1com.liqiang.realm.myRealm #指定securityManager的realms实现 securityManager.realms$myRealm1  PS好记性不如烂笔头  希望自己回头来看一下就能回忆起来         学习文章http://jinnianshilongnian.iteye.com/blog/2018398 转载于:https://www.cnblogs.com/LQBlog/p/7256777.html
http://www.pierceye.com/news/249110/

相关文章:

  • 保靖网站建设做网站要运用到代码吗
  • 我用织梦5.7做个网站应该把淘宝客店铺链接放到哪frontpage可以制作网页吗
  • 潍坊优化网站排名在线网页设计培训机构
  • c做的网站ps做 网站标准尺寸
  • 老虎淘客系统可以做网站吗wordpress po mo
  • 网站的建设与维护那个网站做图片好
  • 昆山网站建设详细方案建设企业网站初始必备的六大功能
  • 做网站是前端还是后端网站规划 设计 制作 发布与管理过程
  • 黄山网站开发威县做网站哪里便宜
  • 网站怎么分类视频聚合网站怎么做不侵权
  • 有没有做问卷还能赚钱的网站套别人的网站模板吗
  • 东莞做汽车有没有买票的网站做谷歌推广一个月赚10万
  • 抚州城乡建设厅网站建设局官网查询
  • 汉中微信网站建设装修3d效果图怎么制作
  • wordpress 主题放哪站内关键词自然排名优化
  • 网站备案后经营做网站实例教程
  • 软件网站怎么做的python下载安装教程
  • 旅游网站开发分析报告网站建设教程搭建芽嘱湖南岚鸿信赖
  • 网站的配色方案高校网站建设意义
  • 滇中引水工程建设管理局网站网站开发怎样验收
  • ps制作网站logo阿里云网站备案拍照
  • 网站建设合同】wordpress翻书
  • 电商网站建设制作隆化县建设局网站
  • 宁波网站建设rswl网页美工设计教案
  • 贵州省住房城乡建设部网站json网站开发
  • 桥头网站仿做百度里面的站长工具怎么取消
  • 博物馆网站页面设计说明山东高端网站定制
  • python网站开发效率jsp做网站下载图片
  • 营销式网站建设免费注册个人网站官网
  • 高职高专 网站建设与维护开发一个网站平台多少钱