「快速集成」SpringBoot集成CAS实现SSO单点登录 就一个标签

依赖



    org.jasig.cas.client
    cas-client-support-springboot
    3.6.2


启动类

一个标签解决@EnableCasClient

import org.jasig.cas.client.boot.configuration.EnableCasClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableCasClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}


配置

#cas集成单点
cas:
  #cas服务端的地址
  server-url-prefix : https://host:ip/sso
  #cas服务端的登录地址
  server-login-url : ${cas.server-url-prefix}/login
  #当前服务器的地址(客户端)
  client-host-url : http://localhost:${server.port}
  #Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
  validation-type : cas3
#cas不拦截的url   不同的路径只需要用 ()|()处理即可
cas-ignore-pattern : (/test/*)
#cas登出地址
cas-single-logout-url : ${cas.server-url-prefix}/logout?service=${cas.client-host-url}/login


看效果

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.IOException;

import static org.jasig.cas.client.util.AbstractCasFilter.CONST_CAS_ASSERTION;

@Slf4j
@Controller
@Profile("cas")
@RequestMapping("sso/cas")
public class CasController {

    @Value("${cas-single-logout-url:}")
    public String casSingleLogoutUrl;

    @RequestMapping("/index")
    public String index(HttpSession session, Model model) {
        Assertion assertion = (Assertion) session.getAttribute(CONST_CAS_ASSERTION);
        AttributePrincipal principal = assertion.getPrincipal();
        String loginName = principal.getName();
        log.info("当前登录用户 -->> {} ",loginName);
        model.addAttribute("loginName",loginName);
        return "index";
    }

    /**
     * 退出登录,跳转登出提示页
     */
    @GetMapping("/logout")
    public String logout(HttpServletRequest request)  {
        HttpSession session = request.getSession(false);
        if (session != null) {
            // 过期会话
            session.invalidate();
        }
        return StringUtils.join("redirect:", casSingleLogoutUrl);
    }
    /**
     * 退出登录 方式2
     */
    @RequestMapping(value = "/logout2")
    public void logout(HttpSession session, HttpServletResponse response){
        session.invalidate();//清除session
        try {
            response.sendRedirect(casSingleLogoutUrl);
        } catch (IOException e) {
            log.error("登出系统失败");
        }
    }
}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章