<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>sa-token</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="description" content="sa-token是一个java权限认证框架,功能全面,上手简单,登录验证、权限验证、Session会话、踢人下线、账号封禁、集成Redis、前后台分离、分布式会话、微服务网关鉴权、单点登录、记住我模式、模拟他人账号、临时身份切换、多账号体系、注解式鉴权、路由拦截式鉴权、花式token、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成、WebFlux集成...,有了sa-token,你所有的权限认证问题,都不再是问题"> <meta name="keywords" content="sa-token,sa-token框架,sa-token文档,java权限认证"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <link rel="shortcut icon" type="image/x-icon" href="logo.png"> <link rel="stylesheet" href="./lib/index.css"> <link rel="stylesheet" href="https://unpkg.zhimg.com/docsify@4.11.3/lib/themes/vue.css"> </head> <body> <a href="/"> <div class="logo-box"> <img src="logo.png" title="logo" /> <h1 class="logo-text">sa-token</h1> </div> </a> <nav> <select onchange="location.href=this.value"> <option value="http://sa-token.dev33.cn/doc/index.html">最新版</option> <option value="http://sa-token.dev33.cn/v/v1.15.0/doc/index.html">v1.15.0</option> <option value="http://sa-token.dev33.cn/v/v1.14.0/doc/index.html">v1.14.0</option> <option value="http://sa-token.dev33.cn/v/v1.13.0/doc/index.html">v1.13.0</option> <option value="http://sa-token.dev33.cn/v/v1.12.1/doc/index.html">v1.12.1</option> <option value="http://sa-token.dev33.cn/v/v1.12.0/doc/index.html">v1.12.0</option> <option value="http://sa-token.dev33.cn/v/v1.11.0/doc/index.html">v1.11.0</option> <option value="http://sa-token.dev33.cn/v/v1.10.0/doc/index.html">v1.10.0</option> <option value="http://sa-token.dev33.cn/v/v1.9.0/doc/index.html">v1.9.0</option> <option value="http://sa-token.dev33.cn/v/v1.8.0/doc/index.html">v1.8.0</option> <option value="http://sa-token.dev33.cn/v/v1.7.0/doc/index.html">v1.7.0</option> <option value="http://sa-token.dev33.cn/v/v1.6.0/doc/index.html">v1.6.0</option> <option value="http://sa-token.dev33.cn/v/v1.5.1/doc/index.html">v1.5.1</option> <option value="http://sa-token.dev33.cn/v/v1.4.0/doc/index.html">v1.4.0</option> </select> <a href="../index.html">首页</a> <!-- <a href="index.html">文档</a> --> <a href="http://sa-app.dev33.cn/wall.html?name=sa-token" target="_blank">需求墙</a> <a href="#/more/tj-gzh">推荐公众号</a> <a href="#/more/update-log">更新日志</a> </nav> <div class="main-box"> <div id="app">加载中...</div> </div> <script> var name = '<img style="width: 60px; height: 60px; vertical-align: middle;" src="logo.png" alt="logo" /> '; name += '<b style="font-size: 28px; vertical-align: middle;">sa-token</b> <sub>v1.16.0</sub>' window.$docsify = { name: name, // 名字 repo: 'https://github.com/dromara/sa-token', // github地址 // themeColor: '#06A3D7', // 主题颜色 basePath: location.pathname.substr(0, location.pathname.lastIndexOf('/') + 1), // 自动计算项目名字 // basePath: '/sa-token-doc/', // 设置文件加载的父路径, 这在一些带项目名部署的文件中非常有效 auto2top: true, // 是否在切换页面后回到顶部 // coverpage: true, // 开启封面 subMaxLevel: 3, // 标题解析层级, 写几就在目录树中解析到几级标题 ,一般写2吧也就 loadSidebar: true, // 加载自定义侧边栏 , 目录定制在: _sidebar.md 文件 (需要创建 .nojekyll 的空文件,阻止 GitHub Pages 忽略命名是下划线开头的文件) copyCode: { // 复制插件 buttonText: '复制到剪贴板', errorText: '错误', successText: '复制成功' }, // search: 'auto', // 搜索功能 alias: { '/.*/_sidebar.md': '/_sidebar.md' }, // tab选项卡 tabs: { persist : true, // 是否在刷新页面时重置选项卡 sync : true, // 页面上的多个tab是否同步切换 theme : 'classic', // 主题:'classic', 'material', false tabComments: true, // 用注释来标注选项卡标题,例如:<!-- tab:SpringBoot --> tabHeadings: true // 用标题+粗体来定制选项卡 }, plugins: [ // 自定义插件 function(hook, vm) { // 解析之后执行 hook.afterEach(function(html) { var url = 'https://gitee.com/dromara/sa-token/tree/dev/sa-token-doc/doc/' + vm.route.file; var url2 = 'https://github.com/dromara/sa-token/tree/dev/sa-token-doc/doc/' + vm.route.file; var footer = [ '<br/><br/><br/><br/><br/><br/><br/><hr/>', '<footer>', '<span>发现错误?想参与编辑? 在 <a href="' + url + '" target="_blank">Gitee</a> 或 <a href="' + url2 + '" target="_blank">GitHub</a> 上编辑此页!</span>', '</footer>' ].join(''); return html + footer; }); // 每次路由切换时数据全部加载完成后调用,没有参数。 hook.doneEach(function() { $('pre code').each(function(){ var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('code-line-box'); $(this) .addClass('has-numbering') .parent() .append($numbering); for(i=1;i<=lines;i++){ $numbering.append($('<li/>').text(i)); } }); }); } ], } </script> <script src="https://unpkg.zhimg.com/docsify@4.9.4/lib/docsify.min.js"></script> <script src="https://unpkg.zhimg.com/docsify-copy-code@2.1.0/dist/docsify-copy-code.min.js"></script> <script src="https://unpkg.zhimg.com/prismjs@1.19.0/components/prism-java.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script> <script src="https://unpkg.zhimg.com/docsify-tabs@1.4.4"></script> <script src="https://unpkg.zhimg.com/jquery@3.4.1/dist/jquery.min.js"></script> <!-- 搜索引擎自动提交 --> <script> (function() { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <!-- 友盟 --> <div style="height: 0px; overflow: hidden;"> <script type="text/javascript" src="https://s4.cnzz.com/z_stat.php?id=1279646043&web_id=1279646043"></script> </div> <!-- 百度统计 --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?77d7418dd845f98ba1cfee8596eeee3f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Gitalk评论 --> <link rel="stylesheet" href="https://unpkg.zhimg.com/gitalk@1.7.0/dist/gitalk.css"> <script src="https://unpkg.zhimg.com/docsify@4.11.6/lib/plugins/gitalk.min.js"></script> <script src="https://unpkg.zhimg.com/gitalk@1.7.0/dist/gitalk.min.js"></script> <script> function f5Gitalk() { var id = location.hash.replace('#', ''); if(id.indexOf('?') > -1) { id = id.substr(0, id.indexOf('?')); } window.gitalk = new Gitalk({ id: id, clientID: '19939399448841f818a1', clientSecret: 'af67e0cc14a0f36e171895771c330471cfe36c23', repo: 'sa-token', // 仓库名称 owner: 'dromara', admin: ['click33'], // 管理员列表 // facebook-like distraction free mode distractionFreeMode: false }) } f5Gitalk(); window.onhashchange = function() { f5Gitalk(); } </script> </body> </html>