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

网站制作方案报价品牌创建策划方案

网站制作方案报价,品牌创建策划方案,北京ui及网页设计,wordpress 大网站一、文档参考#xff1a;框架介绍 (sa-token.cc) 框架生态——开源项目 (sa-token.cc) 二、与SpingBoot整合 1、创建项目 在 IDE 中新建一个 SpringBoot 项目#xff0c;例如#xff1a;sa-token-demo-springboot#xff08;不会的同学请自行百度或者参考#xff1a;Sp… 一、文档参考框架介绍 (sa-token.cc) 框架生态——开源项目 (sa-token.cc) 二、与SpingBoot整合 1、创建项目 在 IDE 中新建一个 SpringBoot 项目例如sa-token-demo-springboot不会的同学请自行百度或者参考SpringBoot-Pure 2、添加依赖 这个是springboot web 项目使用的一个依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency 引入sa-token依赖 !-- Sa-Token 权限认证在线文档https://sa-token.cc -- dependencygroupIdcn.dev33/groupIdartifactIdsa-token-spring-boot-starter/artifactIdversion1.35.0.RC/version /dependency注如果你使用的是 SpringBoot 3.x只需要将 sa-token-spring-boot-starter 修改为 sa-token-spring-boot3-starter 即可。 3、设置配置文件 你可以零配置启动项目 但同时你也可以在 application.yml 中增加如下配置定制性使用框架框架配置 (sa-token.cc) server:# 端口port: 8081############## Sa-Token 配置 (文档: https://sa-token.cc) ############## sa-token:# token 名称同时也是 cookie 名称token-name: satoken# token 有效期单位秒 默认30天-1 代表永久有效timeout: 2592000# token 最低活跃频率单位秒如果 token 超过此时间没有访问系统就会被冻结默认-1 代表不限制永不冻结active-timeout: -1# 是否允许同一账号多地同时登录 为 true 时允许一起登录, 为 false 时新登录挤掉旧登录is-concurrent: true# 在多人登录同一账号时是否共用一个 token 为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 tokenis-share: true# token 风格默认可取值uuid、simple-uuid、random-32、random-64、random-128、tiktoken-style: uuid# 是否输出操作日志is-log: true4、创建启动类 import cn.dev33.satoken.SaManager; import com.fasterxml.jackson.core.JsonProcessingException; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class SaTokenDemoApplication {public static void main(String[] args) throws JsonProcessingException {SpringApplication.run(SaTokenDemoApplication.class, args);System.out.println(启动成功Sa-Token 配置如下 SaManager.getConfig());} } 5、创建Controller类 import cn.dev33.satoken.stp.StpUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/user/) public class UserController {// 测试登录浏览器访问 http://localhost:8081/user/doLogin?usernamezhangpassword123456RequestMapping(doLogin)public String doLogin(String username, String password) {// 此处仅作模拟示例真实项目需要从数据库中查询数据进行比对if(zhang.equals(username) 123456.equals(password)) {StpUtil.login(10001);return 登录成功;}return 登录失败;}// 查询登录状态浏览器访问 http://localhost:8081/user/isLoginRequestMapping(isLogin)public String isLogin() {return 当前会话是否登录 StpUtil.isLogin();} } 6、运行测试  三、基于SpingBoot基础操作 ​Sa-Token 目前主要五大功能模块登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。 1、登录认证  单端登录、多端登录、同端互斥登录、七天内免登录 SpringBootApplication public class AppLogin {public static void main(String[] args) {SpringApplication.run(AppLogin.class,args);} } 启动类代码 package com.satoken.controller;import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map;RestController RequestMapping(/user/) public class UserController {// 测试登录浏览器访问 http://localhost:8081/user/doLogin?usernamezhangpassword123456RequestMapping(doLogin)public String doLogin(String username, String password) {// 此处仅作模拟示例真实项目需要从数据库中查询数据进行比对if(zhang.equals(username) 123456.equals(password)) {StpUtil.login(10001);return 登录成功;}return 登录失败;}// 查询登录状态浏览器访问 http://localhost:8081/user/isLoginRequestMapping(isLogin)public String isLogin() {return 当前会话是否登录 StpUtil.isLogin();}// 退出 http://localhost:8081/user/logoutGetMapping(/logout)public boolean logout(){StpUtil.logout();return true;}检验当前会话是否已经登录, 如果未登录则抛出异常NotLoginException// http://localhost:8081/user/checkLoginGetMapping(/checkLogin)public SaResult checkLogin(){try{StpUtil.checkLogin();return SaResult.ok(已经登录);}catch (NotLoginException e){e.printStackTrace();return SaResult.error(未登录);}}// 获取登录ID http://localhost:8081/user/getLoginIdGetMapping(/getLoginId)public MapString,Object getLoginId(){MapString,Object map new HashMap();// 获取当前会话账号id, 如果未登录则抛出异常NotLoginExceptionmap.put(getLoginId,StpUtil.getLoginId());map.put(getLoginIdAsInt,StpUtil.getLoginIdAsInt());// 获取当前会话账号id, 并转化为String类型return map;}// token信息 http://localhost:8081/user/getTokenGetMapping(/getToken)public SaTokenInfo getToken(){return StpUtil.getTokenInfo();}}测试 2、权限认证  所谓权限认证核心逻辑就是判断一个账号是否拥有指定权限有就让你通过。没有那禁止访问深入到底层数据中就是每个账号都会拥有一组权限码集合框架来校验这个集合中是否包含指定的权限码。 例如当前账号拥有权限码集合 [user-add, user-delete, user-get]这时候我来校验权限 user-update则其结果就是验证失败禁止访问。 所以现在问题的核心就是两个如何获取一个账号所拥有的权限码集合本次操作需要验证的权限码是哪个 因为每个项目的需求不同其权限设计也千变万化因此 [ 获取当前账号权限码集合 ] 这一操作不可能内置到框架中 所以 Sa-Token 将此操作以接口的方式暴露给你方便你根据自己的业务逻辑进行重写。你需要做的就是新建一个类实现 StpInterface接口例如以下代码 package com.satoken.service;import cn.dev33.satoken.stp.StpInterface; import org.springframework.stereotype.Component;import java.util.ArrayList; import java.util.List;/*** 自定义权限加载接口实现类*/ Component // 保证此类被 SpringBoot 扫描完成 Sa-Token 的自定义权限验证扩展 public class StpInterfaceImpl implements StpInterface {/*** 返回一个账号所拥有的权限码集合*/Overridepublic ListString getPermissionList(Object loginId, String loginType) {// 本 list 仅做模拟实际项目中要根据具体业务逻辑来查询权限ListString list new ArrayListString();list.add(101);list.add(user.add);list.add(user.update);list.add(user.get);// list.add(user.delete);list.add(art.*);return list;}/*** 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)*/Overridepublic ListString getRoleList(Object loginId, String loginType) {// 本 list 仅做模拟实际项目中要根据具体业务逻辑来查询角色ListString list new ArrayList();list.add(admin);list.add(super-admin);return list;} } 然后在controller层 import cn.dev33.satoken.stp.StpUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List;RestController RequestMapping(/auth) public class AuthenticationController {// 获取所有权限 http://localhost:8081/auth/getPermissionListGetMapping(/getPermissionList)public ListString getPermissionList(){return StpUtil.getPermissionList();}// 权限判断 http://localhost:8081/auth/hasPermissionGetMapping(/hasPermission)public boolean hasPermission(){// 判断当前账号是否含有指定权限, 返回 true 或 falsereturn StpUtil.hasPermission(user.add);}// 权限检查 http://localhost:8081/auth/checkPermissionGetMapping(/checkPermission)public boolean checkPermission(){// 校验当前账号是否含有指定权限, 如果验证未通过则抛出异常: NotPermissionExceptionStpUtil.checkPermission(user.xadd);return true;}// 权限检查 http://localhost:8081/auth/checkPermissionAndGetMapping(/checkPermissionAnd)public boolean checkPermissionAnd(){// 校验当前账号是否含有指定权限 [指定多个必须全部验证通过]StpUtil.checkPermissionAnd(user.add, user.add, art.get);return true;}// http://localhost:8081/auth/getRoleListGetMapping(/getRoleList)public ListString getRoleList(){// 获取当前账号所拥有的角色集合return StpUtil.getRoleList();}// http://localhost:8081/auth/hasRole?roleGetMapping(/hasRole)public boolean hasRole(String role){return StpUtil.hasRole(role);}// http://localhost:8081/auth/checkRole?roleGetMapping(/checkRole)public boolean checkRole(String role){StpUtil.checkRole(role);return true;} }获取所有权限前提是要先登录相当先要建立session 会话  权限判断后面的接口同理 拦截全局异常 鉴权失败抛出异常要把异常显示给用户看吗当然不可以你可以创建一个全局异常拦截器统一返回给前端的格式参考 RestControllerAdvice public class GlobalExceptionHandler {// 全局异常拦截 ExceptionHandlerpublic SaResult handlerException(Exception e) {e.printStackTrace(); return SaResult.error(e.getMessage());} } 如何将权限精确到按钮级权限范围可以控制到页面上的每一个按钮是否显示 思路如此精确的范围控制只依赖后端已经难以完成此时需要前端进行一定的逻辑判断。 如果是前后端一体项目可以参考Thymeleaf 标签方言如果是前后端分离项目则 在登录时把当前账号拥有的所有权限码一次性返回给前端。前端将权限码集合保存在localStorage或其它全局状态管理对象中。在需要权限控制的按钮上使用 js 进行逻辑判断例如在Vue框架中我们可以使用如下写法 button v-ifarr.indexOf(user.delete) -1删除按钮/button 注意以上写法只为提供一个参考示例不同框架有不同写法大家可根据项目技术栈灵活封装进行调用。 3、踢人下线 所谓踢人下线核心操作就是找到指定 loginId 对应的 Token并设置其失效。 强制注销 StpUtil.logout(10001); // 强制指定账号注销下线 StpUtil.logout(10001, PC); // 强制指定账号指定端注销下线 StpUtil.logoutByTokenValue(token); // 强制指定 Token 注销下线 踢人下线 StpUtil.kickout(10001); // 将指定账号踢下线 StpUtil.kickout(10001, PC); // 将指定账号指定端踢下线 StpUtil.kickoutByTokenValue(token); // 将指定 Token 踢下线 登录之后根据 id 踢人下线 4、注解鉴权 尽管使用代码鉴权非常方便但是我仍希望把鉴权逻辑和业务逻辑分离开来我可以使用注解鉴权吗当然可以注解鉴权 —— 优雅的将鉴权与业务代码分离但是注解鉴权也相对而言不方便改变没有代码鉴权那样可以动态鉴权。 SaCheckLogin: 登录校验 —— 只有登录之后才能进入该方法。SaCheckRole(admin): 角色校验 —— 必须具有指定角色标识才能进入该方法。SaCheckPermission(user:add): 权限校验 —— 必须具有指定权限才能进入该方法。SaCheckSafe: 二级认证校验 —— 必须二级认证之后才能进入该方法。SaCheckBasic: HttpBasic校验 —— 只有通过 Basic 认证后才能进入该方法。SaIgnore忽略校验 —— 表示被修饰的方法或类无需进行注解鉴权和路由拦截器鉴权。SaCheckDisable(comment)账号服务封禁校验 —— 校验当前账号指定服务是否被封禁。 Sa-Token 使用全局拦截器完成注解鉴权功能为了不为项目带来不必要的性能负担拦截器默认处于关闭状态。因此为了使用注解鉴权你必须手动将 Sa-Token 的全局拦截器注册到你项目中以SpringBoot2.0为例新建配置类SaTokenConfigure.java import cn.dev33.satoken.interceptor.SaInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration public class SaTokenConfigure implements WebMvcConfigurer {// 注册 Sa-Token 拦截器打开注解式鉴权功能Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册 Sa-Token 拦截器打开注解式鉴权功能registry.addInterceptor(new SaInterceptor()).addPathPatterns(/**);} } controller层 import cn.dev33.satoken.annotation.*; import cn.dev33.satoken.util.SaResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/auth) public class AuthenticationController {// 登录校验只有登录之后才能进入该方法// http://localhost:8081/auth/infoSaCheckLoginRequestMapping(info)public String info() {return 查询用户信息;}// 角色校验必须具有指定角色才能进入该方法// http://localhost:8081/auth/check_roleSaCheckRole(super-xadmin)RequestMapping(check_role)public String check_role() {return 用户增加;}// 权限校验必须具有指定权限才能进入该方法SaCheckPermission(user-add)RequestMapping(check_permission)public String check_permission() {return 用户增加;}// 校验当前账号是否被封禁 comment 服务如果已被封禁会抛出异常无法进入方法SaCheckDisable(comment)RequestMapping(send)public String send() {return 查询用户信息;}// 注解式鉴权只要具有其中一个权限即可通过校验RequestMapping(atJurOr)SaCheckPermission(value {user-add, user-all, user-delete}, mode SaMode.OR)public SaResult atJurOr() {return SaResult.data(用户信息);}// 角色权限双重 “or校验”具备指定权限或者指定角色即可通过校验RequestMapping(userAdd)SaCheckPermission(value user.add, orRole admin)public SaResult userAdd() {return SaResult.data(用户信息);}// 此接口加上了 SaIgnore 可以游客访问SaIgnoreRequestMapping(getList)public SaResult getList() {// ...return SaResult.ok();}// 在 SaCheckOr 中可以指定多个注解只要当前会话满足其中一个注解即可通过验证进入方法。SaCheckOr(login SaCheckLogin,role SaCheckRole(admin),permission SaCheckPermission(user.add))RequestMapping(test)public SaResult test() {// ...return SaResult.ok();}}在 注解式鉴权 实现了注解鉴权 但是默认的拦截器模式却有一个缺点那就是无法在Controller层以外的代码使用进行校验。因此Sa-Token提供AOP插件你只需在pom.xml里添加如下依赖便可以在任意层级使用注解鉴权。 !-- Sa-Token 整合 SpringAOP 实现注解鉴权 -- dependencygroupIdcn.dev33/groupIdartifactIdsa-token-spring-aop/artifactIdversion1.35.0.RC/version /dependency拦截器模式只能把注解写在Controller层AOP模式可以将注解写在任意层级拦截器和AOP模式不可同时集成否则会在Controller层发生一个注解校验两次的bug
文章转载自:
http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn
http://www.morning.rgsnk.cn.gov.cn.rgsnk.cn
http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn
http://www.morning.skwwj.cn.gov.cn.skwwj.cn
http://www.morning.plchy.cn.gov.cn.plchy.cn
http://www.morning.dsgdt.cn.gov.cn.dsgdt.cn
http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn
http://www.morning.xxhc.cn.gov.cn.xxhc.cn
http://www.morning.qgjwx.cn.gov.cn.qgjwx.cn
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.pffx.cn.gov.cn.pffx.cn
http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn
http://www.morning.dqpd.cn.gov.cn.dqpd.cn
http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn
http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn
http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn
http://www.morning.sfgzx.cn.gov.cn.sfgzx.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn
http://www.morning.xsfg.cn.gov.cn.xsfg.cn
http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn
http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com
http://www.morning.xclgf.cn.gov.cn.xclgf.cn
http://www.morning.pwzzk.cn.gov.cn.pwzzk.cn
http://www.morning.gl-group.cn.gov.cn.gl-group.cn
http://www.morning.jopebe.cn.gov.cn.jopebe.cn
http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn
http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn
http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn
http://www.morning.gctgc.cn.gov.cn.gctgc.cn
http://www.morning.brld.cn.gov.cn.brld.cn
http://www.morning.blfgh.cn.gov.cn.blfgh.cn
http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn
http://www.morning.spnky.cn.gov.cn.spnky.cn
http://www.morning.srbsr.cn.gov.cn.srbsr.cn
http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn
http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn
http://www.morning.gynls.cn.gov.cn.gynls.cn
http://www.morning.ypzr.cn.gov.cn.ypzr.cn
http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn
http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn
http://www.morning.kzpy.cn.gov.cn.kzpy.cn
http://www.morning.tpxgm.cn.gov.cn.tpxgm.cn
http://www.morning.rkfh.cn.gov.cn.rkfh.cn
http://www.morning.hypng.cn.gov.cn.hypng.cn
http://www.morning.nlywq.cn.gov.cn.nlywq.cn
http://www.morning.fgppj.cn.gov.cn.fgppj.cn
http://www.morning.rynq.cn.gov.cn.rynq.cn
http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn
http://www.morning.hwbmn.cn.gov.cn.hwbmn.cn
http://www.morning.807yy.cn.gov.cn.807yy.cn
http://www.morning.fyglr.cn.gov.cn.fyglr.cn
http://www.morning.txrq.cn.gov.cn.txrq.cn
http://www.morning.lqljj.cn.gov.cn.lqljj.cn
http://www.morning.cywf.cn.gov.cn.cywf.cn
http://www.morning.pcxgj.cn.gov.cn.pcxgj.cn
http://www.morning.ykklw.cn.gov.cn.ykklw.cn
http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com
http://www.morning.zqmdn.cn.gov.cn.zqmdn.cn
http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn
http://www.morning.llsrg.cn.gov.cn.llsrg.cn
http://www.morning.npqps.cn.gov.cn.npqps.cn
http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn
http://www.morning.dxgt.cn.gov.cn.dxgt.cn
http://www.morning.rqbkc.cn.gov.cn.rqbkc.cn
http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn
http://www.morning.fwrr.cn.gov.cn.fwrr.cn
http://www.morning.krjrb.cn.gov.cn.krjrb.cn
http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn
http://www.morning.cknrs.cn.gov.cn.cknrs.cn
http://www.morning.zntf.cn.gov.cn.zntf.cn
http://www.morning.fyskq.cn.gov.cn.fyskq.cn
http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn
http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn
http://www.morning.ddjp.cn.gov.cn.ddjp.cn
http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn
http://www.morning.pbzlh.cn.gov.cn.pbzlh.cn
http://www.tj-hxxt.cn/news/266394.html

相关文章:

  • 厦门市建设合同备案网站商城网站设计费用
  • 烟台建设集团 招聘信息网站腾讯的网站是谁做的
  • 梧州网站建设哪家好nas云存储做视频网站
  • 网站顶部下拉广告代码顺德网站制作案例如何
  • 单页面网站可以做自适应网站吗烟台app开发公司
  • 网站seo优化方案设计php网站开发招聘
  • 怎么挑选网站主机怎么对页面颜色进行设计
  • 免费制作网站方案全屋定制报价明细表
  • ?a品定制网站开发网站支付端口
  • 企业服务账号十堰seo排名公司
  • 建设银行对账网站西双版纳傣族自治州景洪市
  • 福建省城市建设厅网站沧州百度建设网站
  • 毕设做网站难吗网名logo设计制作
  • 公司网站制作商wordpress 页面开发教程
  • 建设厅八大员在哪个网站查询北京网站设计的公司
  • 网站加地图网站建设中 敬请期待
  • 石家庄做网站建设的公司排名建设单位网站
  • 重庆未来科技网站建设郑州百度推广托管
  • 企业网站整理优化介绍自己的网页
  • 科技巅峰如何优化网站关键词排名
  • 网站的建设公司个人网页需要什么内容
  • 温州网站建设温州网站制作京东网站优化
  • 做企业网站设计外贸网站建设上海
  • 绚丽网站模板企业广告策划公司
  • 山东建设银行官网网站怎么进入追信魔盒网站开发软件
  • 毕业网站设计企业管理专业就业方向
  • 成都山而网站建设公司内部网站建设软件
  • 赣州网站开发公司合肥营销网站建设公司
  • .我爱你 域名网站高端网站建设公司哪家好
  • 室内设计网站有哪些比较好推销