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

网站是如何建设的微信小程序网站制作

网站是如何建设的,微信小程序网站制作,深圳网站平面设计,wordpress推广浏览插件目录 ShiroShiro核心组件SpringBoot整合Shiro1.创建新SpringBoot项目和导包2.自定义Shiro过滤器Realm3.配置类ShiroConfig编写认证和授权规则案例#xff1a;案例思路改造ShiroConfigAccountController配置视图解析器templates下新建3个页面启动测试 登录认证设置自定义登录页… 目录 ShiroShiro核心组件SpringBoot整合Shiro1.创建新SpringBoot项目和导包2.自定义Shiro过滤器Realm3.配置类ShiroConfig编写认证和授权规则案例案例思路改造ShiroConfigAccountController配置视图解析器templates下新建3个页面启动测试 登录认证设置自定义登录页面写登录接口测试效果 授权设置未授权异常响应登录后显示欢迎信息退出登录动态菜单 tips Shiro 什么是 Shiro 官网http://shiro.apache.org/ 是一款主流的 Java 安全框架不依赖任何容器可以运行在 Java SE 和 Java EE 项目中它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。 Shiro 就是用来解决安全管理的系统化框架。 Shiro核心组件 1.UsernamePasswordToken 封装了用户名和密码的token Shiro 用来封装用户登录信息使用用户的登录信息来创建令牌 Token。 把用户名和密码传入token交给shiro让shiro去登录认证和权限校验 2、SujectShiro 的一个抽象概念包含了用户信息。 相当于包含了用户信息的一个载体系统可通过Suject取用户信息 3、SecurityManagerShiro 的核心部分负责安全认证和授权。 上面只是封装具体操作由它完成 4、AuthenticationInfo用户的角色信息集合认证时使用。 用户、角色、权限会给角色赋予权限给用户赋予角色 5、AuthorizationInfo角色的权限信息集合授权时使用。 6、Realm开发者自定义的模块根据项目的需求验证和授权的逻辑全部写在 Realm 中。 7、DefaultWebSecurityManager安全管理器开发者自定义的 Realm 需要注入到 DefaultWebSecurityManager 进行管理才能生效。 8、ShiroFilterFactoryBean过滤器工厂Shiro 的基本运行机制是开发者定制规则怎么拦截请求怎么认证怎么授权告诉shiroShiro 去执行具体的执行操作就是由 ShiroFilterFactoryBean 创建的一个个 Filter 对象来完成。 Shiro 的运行机制如下图所示。 SpringBoot整合Shiro 1.创建新SpringBoot项目和导包 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion1.5.3/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.3.1.tmp/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency /dependencies2.自定义Shiro过滤器Realm public class AccoutRealm extends AuthorizingRealm {Autowiredprivate AccountService accountService;/*** 登录认证用户名和密码校验* param authenticationToken* return* throws AuthenticationException*/Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {UsernamePasswordToken token (UsernamePasswordToken) authenticationToken;Account account accountService.findByUsername(token.getUsername());if(account ! null){return new SimpleAuthenticationInfo(account,account.getPassword(),getName());}return null;}/*** 授权* param principalCollection* return*/Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {return null;} }3.配置类ShiroConfig Configuration public class ShiroConfig {Bean // 创建对象并放入容器public AccoutRealm accoutRealm(){return new AccoutRealm();}Bean // Qualifier(accoutRealm)根据方法名从ioc容器中取beanpublic DefaultWebSecurityManager securityManager(Qualifier(accoutRealm) AccoutRealm accoutRealm){DefaultWebSecurityManager manager new DefaultWebSecurityManager();manager.setRealm(accoutRealm);return manager;}Bean // Qualifier(securityManager)根据方法名从ioc容器中取beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(Qualifier(securityManager) DefaultWebSecurityManager securityManager){ShiroFilterFactoryBean factoryBean new ShiroFilterFactoryBean();factoryBean.setSecurityManager(securityManager);return factoryBean;} }编写认证和授权规则案例 认证过滤器选项 anon无需认证。 authc必须认证。 authcBasic需要通过 HTTPBasic 认证。 user不一定通过认证只要曾经被 Shiro 记录即可比如记住我。 授权过滤器选项 perms必须拥有某个权限才能访问。 role必须拥有某个角色才能访问。 port请求的端口必须是指定值才可以。 rest请求必须基于 RESTfulPOST、PUT、GET、DELETE。 ssl必须是安全的 URL 请求协议 HTTPS。 案例思路 创建 3 个页面main.html、manage.html、administrator.html访问权限如下 1、必须登录才能访问 main.html 2、当前用户必须拥有 manage 授权才能访问 manage.html 3、当前用户必须拥有 administrator 角色才能访问 administrator.html 改造ShiroConfig Bean // Qualifier(securityManager)根据方法名从ioc容器中取beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(Qualifier(securityManager) DefaultWebSecurityManager securityManager){ShiroFilterFactoryBean factoryBean new ShiroFilterFactoryBean();factoryBean.setSecurityManager(securityManager);//权限设置MapString,String map new Hashtable();map.put(/main,authc); //请求main.html时必须为登录状态map.put(/manage,perms[manage]); //请求manage.html时必须有manage权限map.put(/administrator,roles[administrator]); //请求administrator.html时必须有administrator角色factoryBean.setFilterChainDefinitionMap(map); //根据map创建对应的过滤器去拦截和校验return factoryBean;}AccountController Controller public class AccountController {GetMapping(/{url})public String redirect(PathVariable(url) String url){return url;} }配置视图解析器 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: rooturl: jdbc:mysql://localhost:3306/shiro?serverTimezoneUTCthymeleaf: #配置视图解析器prefix: classpath:/templates/suffix: .html mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpltemplates下新建3个页面 main.html、manage.html、administrator.html 启动测试 浏览器访问http://localhost:8080/main会报500并跳到http://localhost:8080/login.jsp tips页面加入以下代码可消除不影响运行的报错 link relshortcut icon href#/登录认证 设置自定义登录页面 ShiroConfig Bean // Qualifier(securityManager)根据方法名从ioc容器中取beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(Qualifier(securityManager) DefaultWebSecurityManager securityManager){ShiroFilterFactoryBean factoryBean new ShiroFilterFactoryBean();factoryBean.setSecurityManager(securityManager);//权限设置MapString,String map new Hashtable();map.put(/main,authc); //请求main.html时必须为登录状态map.put(/manage,perms[manage]); //请求manage.html时必须有manage权限map.put(/administrator,roles[administrator]); //请求administrator.html时必须有administrator角色factoryBean.setFilterChainDefinitionMap(map); //根据map创建对应的过滤器去拦截和校验//设置去登录页面的后端get请求 不走默认的login.jsp发后端请求经视图解析器走到login.htmlfactoryBean.setLoginUrl(/login); // //设置未授权页面 // factoryBean.setUnauthorizedUrl(/unauth);return factoryBean;}login.html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8titleTitle/titlelink relshortcut icon href#/ /head bodyform action/login methodposttablespan th:text${msg} stylecolor: red/spantrtd用户名/tdtdinput typetext nameusername//td/trtrtd密码/tdtdinput typepassword namepassword//td/trtrtdinput typesubmit value登录//td/tr/table/form /body /html写登录接口 AccountController PostMapping(/login)public String login(String username, String password, Model model){Subject subject SecurityUtils.getSubject();UsernamePasswordToken token new UsernamePasswordToken(username,password);try {subject.login(token); //会走去realm里认证 // Account account (Account) subject.getPrincipal(); // subject.getSession().setAttribute(account,account);return index;} catch (UnknownAccountException e) {e.printStackTrace();model.addAttribute(msg,用户名错误);return login;} catch (IncorrectCredentialsException e){model.addAttribute(msg,密码错误);e.printStackTrace();return login;}}测试效果 1.浏览器输入http://localhost:8080/index进入index页面 2.index页面点击main进入登录页面 3.登录进入首页然后可以访问main了 授权 从数据库取出角色和权限信息设置到框架中 注意案例里用户的角色和权限都是单个的 AccoutRealm /*** 授权* param principalCollection* return*/Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {//获取当前登录的用户信息Subject subject SecurityUtils.getSubject();Account account (Account) subject.getPrincipal();//设置角色SetString roles new HashSet();roles.add(account.getRole());SimpleAuthorizationInfo info new SimpleAuthorizationInfo(roles);//设置权限info.addStringPermission(account.getPerms());return info;}重新启动测试分别用不同用户访问不同页面 设置未授权异常响应 ShiroConfig添加代码 Bean // Qualifier(securityManager)根据方法名从ioc容器中取beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(Qualifier(securityManager) DefaultWebSecurityManager securityManager){ShiroFilterFactoryBean factoryBean new ShiroFilterFactoryBean();factoryBean.setSecurityManager(securityManager);//权限设置MapString,String map new Hashtable();map.put(/main,authc); //请求main.html时必须为登录状态map.put(/manage,perms[manage]); //请求manage.html时必须有manage权限map.put(/administrator,roles[administrator]); //请求administrator.html时必须有administrator角色factoryBean.setFilterChainDefinitionMap(map); //根据map创建对应的过滤器去拦截和校验//设置去登录页面的后端get请求 不走默认的login.jsp发后端请求经视图解析器走到login.htmlfactoryBean.setLoginUrl(/login);//设置处理未授权异常的get接口factoryBean.setUnauthorizedUrl(/unauth);return factoryBean;}AccountController添加代码 GetMapping(/unauth)ResponseBodypublic String unauth(){return 未授权无法访问;}登录后显示欢迎信息 后台登录后把用户信息存进session index页面取出用户名显示 退出登录 index.html添加代码 后端AccountController添加代码 GetMapping(/logout)public String logout(){Subject subject SecurityUtils.getSubject();subject.logout();return login;}动态菜单 1、pom.xml 引入依赖 dependencygroupIdcom.github.theborakompanioni/groupIdartifactIdthymeleaf-extras-shiro/artifactIdversion2.0.0/version /dependency2、配置类 ShiroConfig 添加 ShiroDialect 方言 Bean public ShiroDialect shiroDialect(){return new ShiroDialect(); }3、index.html tips idea不识别已导入依赖 1.maven clean install2.pom 剪切 粘贴3.重启idea Mapper注入报红 因为是用的动态代理对象运行后ioc容器里面才会有不影响运行也可以用Repository解决
http://www.zqtcl.cn/news/977265/

相关文章:

  • 做电商网站前期做什么工作网站后台jsp怎么做分页
  • 百家利网站开发搜索引擎分哪三类
  • 安徽集团网站建设深圳最新通告今天
  • 公司网站主机流量30g每月够用吗攀枝花网站网站建设
  • 淘宝做图片的网站手机网站北京
  • 重庆网站首页排名公司网站公众号小程序开发公司
  • 河源网站制作1993seo福州室内设计公司排名
  • 哪里有做装修网站网站开发总出现出现404
  • 做a漫画在线观看网站策划营销型网站
  • 怎么 从头开始建设一个网站临沂高端网站建设
  • 网页设计制作网站素材传奇代理平台
  • 公司建站网站软文营销方案
  • 成品短视频网站源码搭建免费温州外贸网站制作
  • 旅游公司网站建设pptwordpress 用户增强
  • wordpress 最新东莞seo技术培训
  • 上海微网站开发网站 选项卡 图标
  • 淘宝网站建设的目标什么做网站公司 营销
  • 360企业网站认证wordpress 个人照片
  • 韩国私人网站服务器创业做网站APP开发
  • 成都网站建设推来客网站系统报价wordpress 本地图片 图床
  • 跨境电商怎么做流程青岛网站建设seo
  • 怎么搭建网站平台网站建设相关文献
  • 网站前面的小图标怎么做wordpress文章页广告插件
  • 设计制作一个 个人主页网站淄博做网站的公司都有哪些
  • 10月哪个网站做电影票活动宁波设计公司有哪些
  • 网站建设的pest分析公司erp系统
  • 网站开发一般用哪个浏览器高端酒店网站模板
  • 响应式网站开发哪个好徐州关键字优化咨询
  • 企业建站都有什么网站宁波那家公司做网站好
  • 哪里有零基础网站建设教学培训网页制作要多少钱