700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 手撸SSO单点登录(三):统一跳转至SSO登录页

手撸SSO单点登录(三):统一跳转至SSO登录页

时间:2024-04-12 21:09:42

相关推荐

手撸SSO单点登录(三):统一跳转至SSO登录页

一、目标

这一章节的目标主要是讲解第一次打开系统,无论OA系统,还是认证系统等,在未登录的情况下怎么统一跳转至SSO登录页面。client 用OA系统代替更直观

视频讲解地址/video/BV1qB4y117Lj/

二 、系统UML工程类图

SmartSsoConfig、LoginFilter、LoginController这三个类是主要的实现类

三、代码实现

.yuantai.config.SmartSsoConfig

@Configurationpublic class SmartSsoConfig {@Value("${sso.server.url}")private String serverUrl;@Value("${sso.app.id}")private String appId;@Value("${sso.app.secret}")private String appSecret;/*** 单点登录Filter容器* @return*/@Beanpublic FilterRegistrationBean<SmartContainer> smartContainer() {SmartContainer smartContainer = new SmartContainer();smartContainer.setServerUrl(serverUrl);smartContainer.setAppId(appId);smartContainer.setAppSecret(appSecret);// 忽略拦截URL,多个逗号分隔smartContainer.setExcludeUrls("/login,/logout,/oauth2/*,/custom/*,/assets/*");smartContainer.setFilters(new LogoutFilter(), new LoginFilter());FilterRegistrationBean<SmartContainer> registration = new FilterRegistrationBean<>();registration.setFilter(smartContainer);registration.addUrlPatterns("/*");registration.setOrder(1);registration.setName("smartContainer");return registration;}}

smartContainer() 初始化了参数、注册SmartContainer过滤器SmartContainer过滤器存储了基础参数、doFilter对登录进行验证处理

.yuantai.filter.LoginFilter

isAccessAllowed()方法判断登录三种情况(已登录、第一次登录成功、未登录)redirectLogin(request, response);属于第三种情况未登录、重定向到SSO统一登录页面(:8080/login?appId=xxx&redirectUri=:8080/)

.yuantai.controller.LoginController

/*** 登录页* @param redirectUri* @param appId* @param request* @return*/@RequestMapping(method = RequestMethod.GET)public String login(@RequestParam(value = SsoConstant.REDIRECT_URI, required = true) String redirectUri,@RequestParam(value = Oauth2Constant.APP_ID, required = true) String appId,HttpServletRequest request) throws UnsupportedEncodingException {String tgt = sessionManager.getTgt(request);if (StringUtils.isEmpty(tgt)) {return goLoginPath(redirectUri, appId, request);}return generateCodeAndRedirect(redirectUri, tgt);}

当2步发起重定向后会跳转到login的方法(GET请求)跳转到统一的SSO登录页面

总结

客户端发起请求,这3步完成了统一跳转至SSO登录页面。动手是学习起来最快的方式,不要让眼睛是感觉看会了,但上手操作就废了。也希望有需要的读者可以亲手操作一下,把你的想法也融入到可落地实现的代码里,看看想的和做的是否一致。

代码下载方式

搜索微信公众号:攻城狮小章鱼 ,关注后 ,发SSO源码获取源代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。