【cas】ruoyi vue前后端分离版本 cas集成

ruoyi_vue前后端分离版本, 从网上百度里几个教程写的非常的详细

我就是按照这两个文档册操作来的

参考资料一: 若依前后端分离版本集成CAS Server5.3

参考资料二: RuoYi-Vue前后端分离版集成cas

但是按照上述配置修改后会出现,一单点登录反复跳的情况, 经过排查发现是因为前端获取不到cookie, 所以导致前端被踢到了cas登录页

因为cas存在已通过的认证,所以又被带上ticket, 后台CasAuthenticationSuccessHandler,认证通过后重定向到了前台,因为是重定向所以出现了跨域的问题

所以80端口的虽然重定向设置了cookie但是还是获取不到Admin-Token

ruoyi-ui\src\permission.js

import router from './router'
import store from './store'
import {
   Message} from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import {
   getToken, setToken} from '@/utils/auth'

NProgress.configure({
   showSpinner: false})

const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
const defaultSettings = require('@/settings.js')

router.beforeEach((to, from, next) => {
   
  NProgress.start()
    //这里获取不到token,也就是'Admin-Token'的cookie
  if (getToken()) {
   
    to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
    /* has token*/
    if (to.path === '/login') {
   
      next({
   path: '/'})
      NProgress.done()
    } else {
   
        ......

解决办法:

  1. CasAuthenticationSuccessHandler在重定向是带上一个参数
  2. permission.js中增加一段逻辑,如果获取不到cookie,判断连接是不是指定的casUI,如果是则获取token,并手动set到cookie中
  3. ruoyi-admin\src\main\resources\application.yml 在这是前端登录地址的时候带上casUI,这样就可以了
package com.ruoyi.framework.security.handle;

import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.framework.config.properties.
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值