layui登陆拦截处理
登录与接口鉴权
由于 layuiAdmin 接管了视图层,所以不必避免可能会与服务端分开部署,这时你有必要了解一下 layuiAdmin 默认提供的:从 登录 到 接口鉴权,再到 注销 的整个流程。
登录拦截器
进入登入页面登入成功后,会在 localStorage 的本地表中写入一个字段。如: access_token (名称可以在 config.js 自定义)。拦截器判断没有 access_token 时,则会跳转到登入页。尽管可以通过伪造一个假的 access_token 绕过视图层的拦截,但在请求接口时,会自动带上 access_token,服务端应再次做一层校验。
流程
- 打开
config.js
,将interceptor
参数设置为true
(该参数为 1.0.0-beta6 开始新增)。那么,当其未检查到access_token
值时,会强制跳转到登录页面,以获取 access_token。 - 打开登录对应的视图文件
views/user/login.html
,在代码最下面,你将看到一段已经写好的代码,你需要的是将接口地址改为服务端的真实接口,并返回access_token
值。 - layuiAdmin 会将服务端返回的
access_token
值进行本地存储,这时你会发现 layuiAdmin 不再强制跳转到登录页面。并在后面每次请求服务端接口时,都会自动在参数和 Request Headers 中带上access_token
,以便服务端进行鉴权。 - 若鉴权成功,顺利返回数据;若鉴权失败,服务端的
code
应返回1001
(可在 config.js 自定义) , layuiAdmin 将会自动清空本地无效 token 并跳转到登入页。 - 退出登录:重新打开
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登陆拦截处理相关推荐
- SpringBoot+Shiro实现登陆拦截功能
上一章讲到使用自定义的方式来实现用户登录的功能,这章采用shiro来实现用户登陆拦截的功能. 首先介绍下Shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码 ...
- layui登陆验证页面模板(滑块学习)
layui登陆验证模板(滑块学习) sliderVerify的示例代码 <!DOCTYPE html> <html><head><meta charset=& ...
- 登陆拦截页面报错:localhost 将您重定向的次数过多。 尝试清除 Cookie. ERR_TOO_MANY_REDIRECTS
首先用开发者模式查看浏览器页面的请求状况:(这里由于请求太多,浏览器自动跳转了错误页面,刷新可以看到发送了大量的也页面跳转请求.) 由于我是进行了登陆拦截,而开发者模式中显示的请求正好是我拦截后跳转的 ...
- Play 1.x框架学习之六:未登陆拦截机制 (Not Login intercept In play framework)
为什么80%的码农都做不了架构师?>>> 未登录拦截功能,这是web应用中比较常见的,在本文中,我们结合redis来做未登录拦截.其原理是将sessionid作为key,等登陆 ...
- struts实战--登陆拦截器
登陆校验拦截器 一.概述 功能:用户只有登录成功后,才可以进行操作. 二.实现 1).创建一个类,实现Interceptor接口 1.判断用户user是否为空 2.如果为空,则设置哪些方法可以不用登陆 ...
- SpringBoot_web开发-【实验】-登陆拦截器
我们以前用的HandlerInterceptor,我们专门来实现一个拦截器,登陆状态检查的拦截器,要实现HandlerInterceptor接口,这个拦截器的作用就是做登陆检查,没有登陆的用户就不能访 ...
- 登陆拦截拦截ajax,过滤器实现登录拦截需要注意的问题(AJAX请求的处理)
1.问题描述: 最近自己在写demo时遇到一个问题,在ajax请求时用Filter做登录拦截,结果页面不跳转(Ajax是不能做转发和重定向的).... 最终的最终在同事zt的提示下,恍然大悟,虽然很基 ...
- java登陆拦截器_SpringBoot拦截器实现登录拦截
SpringBoot拦截器可以做什么 可以对URL路径进行拦截,可以用于权限验证.解决乱码.操作日志记录.性能监控.异常处理等. SpringBoot拦截器实现登录拦截 pom.xml:<?xm ...
- java登陆拦截器_登陆拦截器LoginInterceptor
[java]代码库package com.liang.bike.interceptor; import com.liang.bike.bean.base.UserBase; import org.ap ...
最新文章
- TensorFlow集成TensorRT环境配置
- Java程序员常看网站
- grabcut.cpp:380: error: (-215) !bgdSamples.empty() !fgdSamples.empty() in function initGMMs
- 生物信息学(Bioinformatics)
- mysql一直copying to tmp table_mysql提示Copying to tmp table on disk
- 腾讯地图api将物理地址转化成坐标
- 用几何语言表示线段ab的中点c,做完这30道精选题,你的几何图形绝对满分!
- 手机modem开发(5)---LTE基本架构
- sql server 更新语句
- 两岁的微信小程序,创造超 5000 亿的价值
- CSDN第二篇文章· 爬虫突破封禁的6种常见方法
- 学it需要学历吗_学IT需要什么学历
- win11快捷复制粘贴不能用了怎么办?
- MTK芯片平台,MT6737烧录工具资料(SP_Flash_Tool_exe_Windows_v5.1712.00.000)
- 【python】定义一个“曲调类”Note,value属性表示声音的高低 Note的三个子类分别表示高音、低音和中音定义一个“乐器类”Instrument具有play()方法
- 安全信息管理系统(OSSIM)
- mac上卸载Anyconnect后 重新安装失败
- 完美世界刘航:异构计算要避免昙花一现
- 《互联网时代》 第六集 迁徙
- 华为OD机试 - 找到它(Python) | 机试题算法思路