登录与接口鉴权

由于 layuiAdmin 接管了视图层,所以不必避免可能会与服务端分开部署,这时你有必要了解一下 layuiAdmin 默认提供的:从 登录 到 接口鉴权,再到 注销 的整个流程。

登录拦截器

进入登入页面登入成功后,会在 localStorage 的本地表中写入一个字段。如: access_token (名称可以在 config.js 自定义)。拦截器判断没有 access_token 时,则会跳转到登入页。尽管可以通过伪造一个假的 access_token 绕过视图层的拦截,但在请求接口时,会自动带上 access_token,服务端应再次做一层校验。

流程

  1. 打开 config.js ,将 interceptor 参数设置为 true(该参数为 1.0.0-beta6 开始新增)。那么,当其未检查到 access_token 值时,会强制跳转到登录页面,以获取 access_token。
  2. 打开登录对应的视图文件 views/user/login.html,在代码最下面,你将看到一段已经写好的代码,你需要的是将接口地址改为服务端的真实接口,并返回 access_token 值。
  3. layuiAdmin 会将服务端返回的 access_token 值进行本地存储,这时你会发现 layuiAdmin 不再强制跳转到登录页面。并在后面每次请求服务端接口时,都会自动在参数和 Request Headers 中带上 access_token,以便服务端进行鉴权。
  4. 若鉴权成功,顺利返回数据;若鉴权失败,服务端的 code 应返回 1001(可在 config.js 自定义) , layuiAdmin 将会自动清空本地无效 token 并跳转到登入页。
  5. 退出登录:重新打开 controller/common.js,搜索 logout,配上注销接口即可。

如果是在其它场景请求的接口,如:table.render(),那么你需要获取本地存储的 token 赋值给接口参数,如下:

//设置全局 table 实例的 token(这样一来,所有 table 实例均会有效)
table.set({headers: { //通过 request 头传递access_token: layui.data('layuiAdmin').access_token},where: { //通过参数传递access_token: layui.data('layuiAdmin').access_token}
});//设置单个 table 实例的 token
table.render({elem: '#xxxx',url: 'url',where: {access_token: layui.data('layuiAdmin').access_token}//,headers: {}
});

事实上,layuiAdmin 的所有 Ajax 请求都是采用 admin.req(options),它会自动传递 access_token,因此推荐你在 JS 执行 Ajax 请求时直接使用它。其中参数 options 和 $.ajax(options) 的参数完全一样。

接口鉴权

我们推荐服务端遵循 JWT(JSON Web Token) 标准进行鉴权。对 JWT 不甚了解的同学,可以去搜索一些相关资料,会极大地增加应用的可扩展性。当然,你也可以直接采用传统的 cookie / session 机制。

layui登陆拦截处理相关推荐

  1. SpringBoot+Shiro实现登陆拦截功能

    上一章讲到使用自定义的方式来实现用户登录的功能,这章采用shiro来实现用户登陆拦截的功能. 首先介绍下Shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码 ...

  2. layui登陆验证页面模板(滑块学习)

    layui登陆验证模板(滑块学习) sliderVerify的示例代码 <!DOCTYPE html> <html><head><meta charset=& ...

  3. 登陆拦截页面报错:localhost 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS

    首先用开发者模式查看浏览器页面的请求状况:(这里由于请求太多,浏览器自动跳转了错误页面,刷新可以看到发送了大量的也页面跳转请求.) 由于我是进行了登陆拦截,而开发者模式中显示的请求正好是我拦截后跳转的 ...

  4. Play 1.x框架学习之六:未登陆拦截机制 (Not Login intercept In play framework)

    为什么80%的码农都做不了架构师?>>>    未登录拦截功能,这是web应用中比较常见的,在本文中,我们结合redis来做未登录拦截.其原理是将sessionid作为key,等登陆 ...

  5. struts实战--登陆拦截器

    登陆校验拦截器 一.概述 功能:用户只有登录成功后,才可以进行操作. 二.实现 1).创建一个类,实现Interceptor接口 1.判断用户user是否为空 2.如果为空,则设置哪些方法可以不用登陆 ...

  6. SpringBoot_web开发-【实验】-登陆拦截器

    我们以前用的HandlerInterceptor,我们专门来实现一个拦截器,登陆状态检查的拦截器,要实现HandlerInterceptor接口,这个拦截器的作用就是做登陆检查,没有登陆的用户就不能访 ...

  7. 登陆拦截拦截ajax,过滤器实现登录拦截需要注意的问题(AJAX请求的处理)

    1.问题描述: 最近自己在写demo时遇到一个问题,在ajax请求时用Filter做登录拦截,结果页面不跳转(Ajax是不能做转发和重定向的).... 最终的最终在同事zt的提示下,恍然大悟,虽然很基 ...

  8. java登陆拦截器_SpringBoot拦截器实现登录拦截

    SpringBoot拦截器可以做什么 可以对URL路径进行拦截,可以用于权限验证.解决乱码.操作日志记录.性能监控.异常处理等. SpringBoot拦截器实现登录拦截 pom.xml:<?xm ...

  9. java登陆拦截器_登陆拦截器LoginInterceptor

    [java]代码库package com.liang.bike.interceptor; import com.liang.bike.bean.base.UserBase; import org.ap ...

最新文章

  1. TensorFlow集成TensorRT环境配置
  2. Java程序员常看网站
  3. grabcut.cpp:380: error: (-215) !bgdSamples.empty() !fgdSamples.empty() in function initGMMs
  4. 生物信息学(Bioinformatics)
  5. mysql一直copying to tmp table_mysql提示Copying to tmp table on disk
  6. 腾讯地图api将物理地址转化成坐标
  7. 用几何语言表示线段ab的中点c,做完这30道精选题,你的几何图形绝对满分!
  8. 手机modem开发(5)---LTE基本架构
  9. sql server 更新语句
  10. 两岁的微信小程序,创造超 5000 亿的价值
  11. CSDN第二篇文章· 爬虫突破封禁的6种常见方法
  12. 学it需要学历吗_学IT需要什么学历
  13. win11快捷复制粘贴不能用了怎么办?
  14. MTK芯片平台,MT6737烧录工具资料(SP_Flash_Tool_exe_Windows_v5.1712.00.000)
  15. 【python】定义一个“曲调类”Note,value属性表示声音的高低 Note的三个子类分别表示高音、低音和中音定义一个“乐器类”Instrument具有play()方法
  16. 安全信息管理系统(OSSIM)
  17. mac上卸载Anyconnect后 重新安装失败
  18. 完美世界刘航:异构计算要避免昙花一现
  19. 《互联网时代》 第六集 迁徙
  20. 华为OD机试 - 找到它(Python) | 机试题算法思路

热门文章

  1. js只获取链接的域名部分
  2. [NOI2019] I君的探险
  3. ARM测试题总结(一)
  4. Android源码阅读-编译8
  5. python3基础教程pdf下载-廖雪峰Python3基础教程完整版电子书免费下载
  6. Eclipse 安装反编译插件jadclipse
  7. 乔布斯女儿嘲讽iPhone 14没新意;高德打车AR实景找车功能上线;Go语言报告:错误处理仍然是个挑战|极客头条...
  8. 014-Ambari功能介绍
  9. 基于Arduino的简易跑马灯+呼吸灯
  10. Testbench编写指南(1)基本组成与示例