用户认证篇

文章目录

  • 1. 如何生成用户认证token令牌
    • 1.1 相关表
    • 1.2 生成令牌逻辑
    • 1.3 最终结果
  • 2. 如何认证用户token令牌
    • 2.1 前端组件
    • 2.2 TokenAuthenticationFilter
    • 2.3 获得登陆用户
  • 3. 如何刷新用户认证 Token 令牌
    • 3.1 前端组件
    • 3.2 刷新令牌接口
  • 4. 如何模拟用户认证token令牌
  • 5. 如何实现URL需要登陆
    • 5.1 @PermitAll
    • 5.2 @PreAuthenticated
    • 5.3 每个项目自定义URL规则
    • 5.4 兜底

1. 如何生成用户认证token令牌

在这里插入图片描述

1.1 相关表

分为访问令牌access_token和刷新令牌refresh_token, 分别保存在system_oauth2_access_tokensystem_oauth2_refresh_token
访问令牌设置的过期时间一般比较短,通常为30min,刷新令牌可以设置很长时间,比如30天。访问令牌快过期,可以用刷新令牌获得一个新的访问令牌。

1.2 生成令牌逻辑

先生成刷新令牌,再生成访问令牌。

  • 入口
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 生成刷新令牌
    在这里插入图片描述
  • 生成访问令牌
    在这里插入图片描述

1.3 最终结果

在这里插入图片描述

2. 如何认证用户token令牌

在这里插入图片描述

2.1 前端组件

在前端yudao-ui-admin-vue3里面,看service.ts,拦截请求,在请求header添加访问token。
在这里插入图片描述

2.2 TokenAuthenticationFilter

在这里插入图片描述

2.3 获得登陆用户

SecurityFrameworkUtils的getLoginUser方法,2.2步骤当中已经设置在SecurityContext。

3. 如何刷新用户认证 Token 令牌

在这里插入图片描述

3.1 前端组件

在前端yudao-ui-admin-vue3里面,看service.ts,拦截响应。如果返回错误401,则刷新令牌。
在这里插入图片描述

3.2 刷新令牌接口

/system/auth/refresh-token
在这里插入图片描述
在这里插入图片描述

4. 如何模拟用户认证token令牌

在这里插入图片描述

http://127.0.0.1:48080/doc.html#/home
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 如何实现URL需要登陆

在这里插入图片描述
主要看YudaoWebSecurityConfigurerAdapter#filterChain。

5.1 @PermitAll

这个注解上JavaEE的标准。有该注解的URL免登陆。

  • 如何获得有该注解的URL。
    在这里插入图片描述
    在这里插入图片描述
  • 免登陆
    在这里插入图片描述

5.2 @PreAuthenticated

APP应用大部分不需要认证,比如在京东访问商品页面等,但有些场合上一定要登陆的,比如重置密码。
通过aop实现。
在这里插入图片描述

5.3 每个项目自定义URL规则

在这里插入图片描述
比如这个:

在这里插入图片描述

5.4 兜底

必须认证。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 输出链表的第一个和最后一个元素

使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlistname.getLast() 来获取链表的第一个和最后一个元素 完整代码 import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> lList new LinkedList<…

Java 删除链表中的元素

使用 clear() 方法来删除链表中的元素 完整代码 import java.util.*;public class Main {public static void main(String[] args) {LinkedList<String> lList new LinkedList<String>();lList.add("1");lList.add("8");lList.add("6&…

Java 获取链表的元素

使用 top() 和 pop() 方法来获取链表的元素 完整代码 import java.util.*;public class Main {private LinkedList list new LinkedList();public void push(Object v) {list.addFirst(v);}public Object top() {return list.getFirst();}public Object pop() {return list.…

Java 向量元素的索引值

使用 Collections 类的 sort() 方法对向量进行排序并使用 binarySearch() 方法来获取向量元素的索引值 完整代码 import java.util.Collections; import java.util.Vector;public class Main {public static void main(String[] args) {Vector v new Vector();v.add("X…

Java 栈的存储过程

我们通过创建用于插入元素的自定义函数 push() 方法和用于弹出元素的 pop() 方法来实现栈 完整代码 public class MyStack {private int maxSize;private long[] stackArray;private int top;public MyStack(int s) {maxSize s;stackArray new long[maxSize];top -1;}publ…

Java 查找链表中的元素

使用 linkedlistname.indexof(element) 和 linkedlistname.Lastindexof(elementname) 方法在链表中获取元素第一次和最后一次出现的位置 完整代码 import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList lList new LinkedLis…

Java 进栈出栈的过程

我们使用自定义的方法 StringReverserThroughStack() 来实现进栈和出栈的详细过程。 完整代码 import java.io.IOException;public class StringReverserThroughStack {private String input; private String output;public StringReverserThroughStack(String in) {input i…

Java 获取向量中的最大值

使用 Vector 类的 v.add() 方法及 Collection 类的 Collections.max() 来获取向量的最大值 完整代码 import java.util.Collections; import java.util.Vector;public class Main {public static void main(String[] args) {Vector v new Vector();v.add(new Double("3…

Java 链表数据修改

使用 listname.add() 和 listname.set() 方法来修改链接中的元素 完整代码 import java.util.LinkedList;public class Main {public static void main(String[] a) {LinkedList officers new LinkedList();officers.add("B");officers.add("B");office…

Java 旋转向量

使用 swap() 函数来旋转向量 完整代码 import java.util.Collections; import java.util.Vector;public class Main {public static void main(String[] args) {Vector<String> v new Vector();v.add("1");v.add("2");v.add("3");v.add…

Java 数组转化成集合

用 Java Util 类的 Arrays.asList(name) 方法将数组转换为集合 完整代码 import java.util.*; import java.io.*;public class ArrayToCollection{public static void main(String args[]) throws IOException{int n 5; // 5 个元素String[] name new String[n];fo…

Java HashMap元素取值

使用 Collection 类的 iterator() 方法来遍历HashMap集合 完整代码 import java.util.*;public class Main {public static void main(String[] args) {HashMap< String, String> hMap new HashMap< String, String>();hMap.put("1", "1st"…

Java 获取集合长度

使用 Collections 类 的collection.add() 来添加数据并使用 collection.size()来计算集合的长度 完整代码 import java.util.*;public class Main {public static void main(String [] args) { System.out.println( "集合实例!\n" ); int size;HashSet collectio…

Java 集合重组

使用 Collections 类 Collections.shuffle() 方法来打乱集合元素的顺序进行集合的重组 完整代码 import java.util.*;public class Main {public static void main(String[] args) {List<Integer> list new ArrayList<Integer>();for (int i 0; i < 10; i)l…

Java 获取集合元素的值

遍历从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型的集合&#xff0c;我们分别使用了普通for&#xff0c;增强型的 for &#xff0c;iterator 等方式来遍历集合 完整代码 import java.util.ArrayList; import java.util.HashSet; import java.util.Iterat…

MySql数据库连接种类

查询分析器中执行&#xff1a; 建表table1,table2&#xff1a; create table table1(id int,name varchar(10)) create table table2(id int,score int) insert into table1 select 1,‘lli’ insert into table1 select 2,‘zhang’ insert into table1 select 4,‘wang’ i…

Java 删除集合中指定的元素

使用 Collection 类的 collection.remove() 方法来删除集合中的指定的元素 完整代码 import java.util.*;public class Main {public static void main(String [] args) { System.out.println( "集合实例!\n" ); int size;HashSet collection new HashSet ();St…

Java 只读集合

使用 Collection 类的 Collections.unmodifiableList() 方法来设置集合为只读 完整代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.ut…

Java集合转化为数组

用list.add() 和 list.toArray() 方法将集合转为数组 完整代码 import java.util.*;public class Main{public static void main(String[] args){List<String> list new ArrayList<String>();list.add("h"); list.add("a"); list.add("…

Java 遍历HashTable

用keys()方法来遍历HashTable并输出键值 完整代码 import java.util.Enumeration; import java.util.Hashtable;public class Main {public static void main(String[] args) {Hashtable ht new Hashtable();ht.put("1", "One");ht.put("2", …