前端部分
==================================================================================================================
修改src/permission.js文件
//需要设置令牌
import { getToken, setToken } from '@/utils/auth'
//获取令牌参数
const token = to.query.token
if (token) {
//前端存储令牌
store.commit('user/SET_TOKEN', token)
setToken(token)
//避免显示令牌
next(to.path)
}
//跳转后端登录
window.location.href = process.env.VUE_APP_BASE_API + '/login?redirect=' + encodeURIComponent(window.location.href)
修改src/utils/request.js文件
//修改令牌参数
config.headers['X-Auth-Token'] = getToken()
修改vue.config.js文件
//代理后端服务
target: `http://localhost:8080`,
修改src\store\modules\user.js文件
//增加接收参数
logout(state.token).then((response) => {
//跳转退出地址
if (response.logoutUrl) {
window.location.href = response.logoutUrl + '?service=' + encodeURIComponent(window.location.href)
}
后端部分
==================================================================================================================
修改pom.xml文件
//引入Spring-Session依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
//引入Cas-Client依赖
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.5.1</version>
</dependency>
修改application.properties文件
//配置Spring-Session参数
spring.session.store-type=redis
spring.redis.host=192.168.99.230
spring.redis.password=bessky123
spring.redis.port=6379
spring.redis.database=15
修改Application.java文件
//启用Spring-Session的REST模式
@Bean
public HttpSessionIdResolver httpSessionIdResolver()
{
return HeaderHttpSessionIdResolver.xAuthToken();
}
//单点登录配置
@Bean
public FilterRegistrationBean<Cas30ProxyReceivingTicketValidationFilter> cas30ProxyReceivingTicketValidationFilter()
{
FilterRegistrationBean<Cas30ProxyReceivingTicketValidationFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new Cas30ProxyReceivingTicketValidationFilter());
registration.addInitParameter("casServerUrlPrefix", "https://erp.ser.ltd/sso");
registration.addInitParameter("serverName", "http://localhost:8080");
registration.addInitParameter("redirectAfterValidation", "false");
registration.addUrlPatterns("/*");
return registration;
}
@Bean
public FilterRegistrationBean<AuthenticationFilter> authenticationFilter()
{
FilterRegistrationBean<AuthenticationFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new AuthenticationFilter());
registration.addInitParameter("casServerUrlPrefix", "https://erp.ser.ltd/sso");
registration.addInitParameter("serverName", "http://localhost:8080");
registration.addUrlPatterns("/*");
return registration;
}
@Bean
public FilterRegistrationBean<HttpServletRequestWrapperFilter> httpServletRequestWrapperFilter()
{
FilterRegistrationBean<HttpServletRequestWrapperFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new HttpServletRequestWrapperFilter());
registration.addUrlPatterns("/*");
return registration;
}
增加SingleSignController.java文件
//前端登录处理
@Controller
public class SingleSignController
{
@RequestMapping("login")
public String login(String redirect, HttpSession session)
{
return "redirect:" + redirect + "?token=" + session.getId();
}
}
增加UserController.java文件
//模拟前端数据
@RestController
@RequestMapping("user")
public class UserController
{
@RequestMapping("logout")
public String logout(HttpServletRequest request, HttpSession session)
{
// 获取单点登出地址
String logoutUrl = "";
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
if (principal != null)
{
Map<String, Object> attributes = principal.getAttributes();
if (attributes != null)
{
logoutUrl = (String) attributes.get("logout_url");
}
}
session.invalidate();
return "{\"code\":20000,\"data\":\"success\",\"logoutUrl\":\"" + logoutUrl + "\"}";
}
@RequestMapping("info")
public String info(HttpSession session)
{
System.out.println(session.getId());
return "{\"code\":20000,\"data\":{\"roles\":[\"admin\"],\"introduction\":\"I am a super administrator\",\"avatar\":\"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\",\"name\":\"Super Admin\"}}";
}
}
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐