- 前置条件,若依非vue版本,项目已同步单点登录的用户
https://download.csdn.net/download/weixin_43091752/88855942?spm=1001.2014.3001.5503
- 在LoginController中添加方法,成功就跳转项目index页面,失败就直接redirect 到登录页(单点登录页,非项目登录页)
@Value("${shiro.user.loginUrl}")
private String loginUrl;
/**
* SSOP访问
* @param sessionid
* @param statuscode
* @return
*/
@GetMapping("/SSOP")
public String SSOPLogin(String sessionid,String statuscode) {
System.err.println("sessionid: "+sessionid);
System.err.println("statuscode: "+statuscode);
if(statuscode!=null&&"xxx".equals(statuscode)){
//通过sessionid使用接口获取到用户信息的用户名称,比对自己系统
String userName = sessionid;//----此处调用接口返回用户信息-暂用做用户名
UsernamePasswordToken token = new UsernamePasswordToken(userName, Constants.SSOP_PW, false);
Subject subject = SecurityUtils.getSubject();
try
{
subject.login(token);
return redirect("index");
}
catch (AuthenticationException e)
{
String msg = "用户或密码错误";
if (StringUtils.isNotEmpty(e.getMessage()))
{
msg = e.getMessage();
}
System.err.println(msg);
return redirect(loginUrl);
}
}else{
System.err.println("返回值状态异常");
return redirect(loginUrl);
}
}
- 登录页设置,保证不会跳本项目的登录页
(1)修改yml配置文件中shiro的登录地址,这个地址登录/退出都会跳转
(2)修改登录代码获取单点登录地址
/**
* 登录验证
*
* @author ruoyi
*/
@Controller
public class LoginController extends BaseController{
@Value("${shiro.user.loginUrl}")
private String loginUrl;
//登录等方法
xxxx
//报错就跳转单点登录页
}
- 在config文件夹下找到shiro文件,放行新增/sso接口