国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
Redis stores user token
Generate a token when logging in and store it in Redis
When each page is generated, provide the token
Delete the token when logging out
Redis Dealing with token issues
java—Handling tokens based on redis
Home Database Redis How to solve the problem of storing user tokens in Redis

How to solve the problem of storing user tokens in Redis

May 31, 2023 am 08:06 AM
redis token

    Redis stores user token

    When designing a system similar to e-commerce, a common requirement is that each page needs to carry logged-in user information.

    There are two common solutions:

    • Use cookies to save

    • Use JWT to save

    But if Redis cache is used in the system, then there is a third solution - cache the user token in Redis.

    Generate a token when logging in and store it in Redis

    //生成一個(gè)token對(duì)象,保存在redis中
    redisTemplate.opsForHash().put("token","user",user);

    When each page is generated, provide the token

    //以JSON字符串形式返回token
    @RequestMapping(value = "/getToken",method = RequestMethod.GET)
    @ResponseBody
    public User getToken(){
        User user = (User) redisTemplate.opsForHash().get("token", "user");
        return user;
    }
    //發(fā)送ajax請(qǐng)求,獲取token
    function get_token(){
        $.ajax({
            url:"getToken",
            type:"GET",
            dataType:"JSON",
            success:function(result){
                //將返回的用戶信息保存在token中
                var token = result;
                //打印登錄用戶
                console.log(token);
                //打印登錄用戶的id
                console.log(token.id);
                document.getElementById('username').innerText = "用戶名:"+token.username;
            }
        });
    }

    Delete the token when logging out

    //注銷
    @RequestMapping("/logout")
    public String logout(){
        redisTemplate.opsForHash().delete("token","user");
        return "/login";
    }

    Redis Dealing with token issues

    java—Handling tokens based on redis

    First of all, make it clear that token: token is a way of processing user information for front-end and back-end interaction after logging in. There are two main types Methods, one is based on session storage, and the other is based on redis storage. This article only discusses user information processing based on redis.   

    For every information interaction after a user logs in, if user information needs to be passed, especially user IDs and the like, it is obviously unwise to query the database every time. We can Create a space in redis to save user information, and then we will use it from redis every time we need user information.

    First create RedisUtil

    @Component
    
    public class RedisUtil {
    
        @Autowired
        private RedisTemplate redisTemplate;   //key-value是對(duì)象的
    
        //判斷是否存在key
        public boolean hasKey(String key) {
            return redisTemplate.hasKey(key);
        }
    
        //從redis中獲取值
        public Object get(String key) {
            return redisTemplate.opsForValue().get(key);
        }
    
        //向redis插入值
        public boolean set(final String key, Object value) {
            boolean result = false;
            try {
                redisTemplate.opsForValue().set(key, value);
                result = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        //向redis插入值帶過(guò)期時(shí)間 單位:分鐘
        public boolean set(final String key, Object value, long time) {
            boolean result = false;
            try {
                redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES);
                result = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        //redis刪除值
        public boolean del(final String key) {
            return redisTemplate.delete(key);
        }
    
        //批量刪除某個(gè)字段開(kāi)始的key
        public long batchDel(String key) {
            Set<String> set = redisTemplate.keys(key + "*");
            return redisTemplate.delete(set);
        }
    
    }

    After creating RedisUtil, we need to store the value in redis. At this time, we need to pay attention to the fact that our key needs to be discussed with the front-end in advance, which field name to use, and the current-end When requesting, the key must be passed in the header. The value is encrypted and returned to the front end after the first login. After we get the header information, we need to decrypt the value first and use the value as the key to get the user information.

    @Component
    public class UserUtil {
        @Autowired
        private RedisUtil redisUtil;
        @Autowired
        private HttpServletRequest request;
    
        /**
         * 后臺(tái)管理的登錄id
         *
         * @return
         */
        public JsonResult getUser() {
            String header = request.getHeader("#與前端約定的統(tǒng)一字段#");
            //解密
            String decrypt = DESUtil.decrypt(header);
            if (!redisUtil.hasKey(decrypt))return JsonResult.error("未登錄");
            User user = null;
            try {
                user = (User) redisUtil.get(decrypt);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (decrypt == null) return JsonResult.error("權(quán)限不足");
            return JsonResult.success(user);
        }
    }

    When we need it

            JsonResult jsonResult = userUtil.getUser();
            if (jsonResult.getCode() != 1) return jsonResult;
            //強(qiáng)轉(zhuǎn)成對(duì)象。此處不用擔(dān)心強(qiáng)轉(zhuǎn)失敗,因?yàn)榇嫒氲臅r(shí)候就是對(duì)象存儲(chǔ),只不過(guò)為了復(fù)用,存的是object類型
            User user= (User) jsonResult.getData();
            return JsonResult.success(#service層#);
        }

    The above is the detailed content of How to solve the problem of storing user tokens in Redis. For more information, please follow other related articles on the PHP Chinese website!

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    Laravel8 optimization points Laravel8 optimization points Apr 18, 2025 pm 12:24 PM

    Laravel 8 provides the following options for performance optimization: Cache configuration: Use Redis to cache drivers, cache facades, cache views, and page snippets. Database optimization: establish indexing, use query scope, and use Eloquent relationships. JavaScript and CSS optimization: Use version control, merge and shrink assets, use CDN. Code optimization: Use Composer installation package, use Laravel helper functions, and follow PSR standards. Monitoring and analysis: Use Laravel Scout, use Telescope, monitor application metrics.

    How to use the Redis cache solution to efficiently realize the requirements of product ranking list? How to use the Redis cache solution to efficiently realize the requirements of product ranking list? Apr 19, 2025 pm 11:36 PM

    How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

    What should I do if the Redis cache of OAuth2Authorization object fails in Spring Boot? What should I do if the Redis cache of OAuth2Authorization object fails in Spring Boot? Apr 19, 2025 pm 08:03 PM

    In SpringBoot, use Redis to cache OAuth2Authorization object. In SpringBoot application, use SpringSecurityOAuth2AuthorizationServer...

    Recommended Laravel's best expansion packs: 2024 essential tools Recommended Laravel's best expansion packs: 2024 essential tools Apr 30, 2025 pm 02:18 PM

    The essential Laravel extension packages for 2024 include: 1. LaravelDebugbar, used to monitor and debug code; 2. LaravelTelescope, providing detailed application monitoring; 3. LaravelHorizon, managing Redis queue tasks. These expansion packs can improve development efficiency and application performance.

    Laravel environment construction and basic configuration (Windows/Mac/Linux) Laravel environment construction and basic configuration (Windows/Mac/Linux) Apr 30, 2025 pm 02:27 PM

    The steps to build a Laravel environment on different operating systems are as follows: 1.Windows: Use XAMPP to install PHP and Composer, configure environment variables, and install Laravel. 2.Mac: Use Homebrew to install PHP and Composer and install Laravel. 3.Linux: Use Ubuntu to update the system, install PHP and Composer, and install Laravel. The specific commands and paths of each system are different, but the core steps are consistent to ensure the smooth construction of the Laravel development environment.

    Redis's Role: Exploring the Data Storage and Management Capabilities Redis's Role: Exploring the Data Storage and Management Capabilities Apr 22, 2025 am 12:10 AM

    Redis plays a key role in data storage and management, and has become the core of modern applications through its multiple data structures and persistence mechanisms. 1) Redis supports data structures such as strings, lists, collections, ordered collections and hash tables, and is suitable for cache and complex business logic. 2) Through two persistence methods, RDB and AOF, Redis ensures reliable storage and rapid recovery of data.

    How to configure slow query log in centos redis How to configure slow query log in centos redis Apr 14, 2025 pm 04:54 PM

    Enable Redis slow query logs on CentOS system to improve performance diagnostic efficiency. The following steps will guide you through the configuration: Step 1: Locate and edit the Redis configuration file First, find the Redis configuration file, usually located in /etc/redis/redis.conf. Open the configuration file with the following command: sudovi/etc/redis/redis.conf Step 2: Adjust the slow query log parameters in the configuration file, find and modify the following parameters: #slow query threshold (ms)slowlog-log-slower-than10000#Maximum number of entries for slow query log slowlog-max-len

    In a multi-node environment, how to ensure that Spring Boot's @Scheduled timing task is executed only on one node? In a multi-node environment, how to ensure that Spring Boot's @Scheduled timing task is executed only on one node? Apr 19, 2025 pm 10:57 PM

    The optimization solution for SpringBoot timing tasks in a multi-node environment is developing Spring...

    See all articles