欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SpringBoot中怎么利用Vue和Redis實現(xiàn)單點登錄功能

今天就跟大家聊聊有關SpringBoot中怎么利用Vue和redis實現(xiàn)單點登錄功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

公司主營業(yè)務:網站設計制作、成都網站制作、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出沈河免費做網站回饋大家。

1、創(chuàng)建SpringBoot項目,創(chuàng)建User表,由于是通過Vue編寫的,所以是前后端分離,需要跨域,我這里編寫了跨域配置類,還有redis的util類,返回的封裝類,cookie的util類,文末有源碼提供,可以自行提取。

2、yum配置文件

spring: redis:  database: 0  #redis的默認數(shù)據庫為0  host: 127.0.0.1 #鏈接redis的ip  port: 6379 #鏈接redis的端口號  password:  #鏈接redis的密碼 默認為空  jedis:   pool:    max-total: 200  #鏈接redis的總數(shù)目    max-active: 100 #鏈接redis的最大    max-idle: 8   #最大的鏈接數(shù)量    min-idle: 5   #最小的鏈接數(shù)量 datasource:  url: jdbc:MySQL://127.0.0.1:3306/test?useUnicode=true  username: root  password: root  driver-class-name: com.mysql.jdbc.Driver jpa:  show-sql: trueserver: port: 8888REDIS_KEY : USER_TOKEN

3、編寫實體User.class

@Data@Entity@Table(name = "user")public class User {  @Id  @Column(name = "id",unique = true,nullable = false)  private int id;  @Column(name = "username",nullable = false)  private String username;  @Column(name = "password",nullable = false)  private String password;}

4、編寫Dao,UserDao.class

public interface UserDao extends JpaRepository<User,Integer> {  public User findByUsernameAndPassword(String username, String password);}

5、編寫serviceImpl,UserServiceImpl.class進行登錄的業(yè)務邏輯處理

@Servicepublic class UserServiceImpl{  @Autowired  private UserDao userDao;  @Autowired  private JedisDao jedisDao;  @Value("${REDIS_KEY}")  //從配置文件中取值  private String KEY;  private Map<Integer,String> UserLogin = new HashMap<>();  /**   * 登錄   * @param request   * @param response   * @param u   * @return   */  public User userlogin(HttpServletRequest request, HttpServletResponse response, User u){    //查詢登錄是否成功    User user=userDao.findByUsernameAndPassword(u.getUsername(),u.getPassword());    //判斷us是否為空    if(user==null){      return null;    }    //生成token    String token="user_"+ UUID.randomUUID().toString();    //從map中獲得redis中的key    String oldToken = UserLogin.get(user.getId());    //判斷map中是否存在該id    if(!StringUtils.isEmpty(oldToken)){      //刪除redis中老的值      jedisDao.delValue(oldToken);    }    //將新的的key保存到map中    UserLogin.put(user.getId(),token);    //將信息存入redis    jedisDao.setValue(token, JsonUtils.objectToJson(user));    //將token放入cookie中    CookieUtils.setCookie(request,response,KEY,token,5*60,true);    return user;  }  /**   * 判斷是否登錄   * @param response   * @param request   * @return   */  public String getUserByToken(HttpServletResponse response, HttpServletRequest request) {    //從cookie中取出用戶token    String token=CookieUtils.getCookieValue(request,KEY);    //從redis中取出用戶信息    String user= jedisDao.getValue(token);    return user;  }}

6、編寫controller,接收前端請求,返回數(shù)據

@RestControllerpublic class LoginController {  @Autowired  private UserServiceImpl userService;  /**   * 登錄   * @param response   * @param request   * @param user   * @param model   * @return   */  @PostMapping("/login")  public ResponseResult Login(HttpServletResponse response , HttpServletRequest request, @RequestBody User user, Model model){    ResponseResult responseResult=new ResponseResult();    try {      User user2 = userService.userlogin(request, response, user);      if (user2!=null){        responseResult.setState(200);        responseResult.setMsg("登錄成功!");        return responseResult;      }else{        responseResult.setState(202);        responseResult.setMsg("用戶名或密碼錯誤!");        return responseResult;      }    }catch (Exception e) {      responseResult.setState(500);      responseResult.setMsg("發(fā)生錯誤,登錄失敗!");      return responseResult;    }  }  /**   * 判斷是否登錄   * @param response   * @param request   * @return   * @throws Exception   */  @GetMapping("/toLogin")  public ResponseResult getUserInfo(HttpServletResponse response , HttpServletRequest request) throws Exception {    ResponseResult responseResult=new ResponseResult();    try{      String token = userService.getUserByToken(response, request);      if(token!=null){        responseResult.setState(200);        responseResult.setMsg("登錄中!");        return responseResult;      }else{        responseResult.setState(202);        responseResult.setMsg("在別處登錄!");        return responseResult;      }    }catch (Exception e){      response.setStatus(500);      responseResult.setMsg("發(fā)生錯誤!");      return responseResult;    }  }}

Vue前端

1、創(chuàng)建Vue項目:vue init webpack 項目名稱2、引入axios:npm install --save axios vue-axios3、引入element:npm i element-ui -S4、在src的main.js下配置

import axios from 'axios'import VueAxios from 'vue-axios'// element-ui 引入文件import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'//注冊 VueAxios, axiosVue.use(VueAxios, axios)Vue.use(ElementUI)//配置axios支持cookieaxios.defaults.withCredentials = true;

5、在src的components下創(chuàng)建login.vue,userinfo.vue,并在src的router下配置訪問地址

import Vue from 'vue'import Router from 'vue-router'import login from '@/components/login'import UserInfo from '@/components/userinfo'Vue.use(Router)export default new Router({ routes: [{  path: '/login',  component: login }, {  path: '/user_info',  component: UserInfo }]})

看完上述內容,你們對SpringBoot中怎么利用Vue和Redis實現(xiàn)單點登錄功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章題目:SpringBoot中怎么利用Vue和Redis實現(xiàn)單點登錄功能
當前路徑:http://chinadenli.net/article32/jgpdsc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航動態(tài)網站App開發(fā)網頁設計公司Google品牌網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網站優(yōu)化