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 {
......
解决办法:
CasAuthenticationSuccessHandler
在重定向是带上一个参数- 在
permission.js
中增加一段逻辑,如果获取不到cookie,判断连接是不是指定的casUI
,如果是则获取token,并手动set到cookie中 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.