234、商城业务-认证服务-单点登录流程-2

@Controller
public class HelloController {

    @Value("${sso.server.url}")
    String ssoServerUrl;

    /**
     * 无需登录就可以访问
     * @return
     */
    @ResponseBody
    @GetMapping("/hello")
    public String hello(){
        return hello();
    }

    /**
     * 感知这次是在 ssoserver登录成功眺回来
     * @param model
     * @param session
     * @param token 只要去ssoserver登录成功眺回来就会带上
     * @return
     */
    @GetMapping("/employee")
    public String employee(Model model, HttpSession session, @RequestParam(value = "token", required = false) String token){

        if(!StringUtils.isEmpty(token)){
            // 去ssoserver登录成功眺回来就会带上
            // TODO 1、去 ssoserver获取当前token 真正对应的用户信息
            session.setAttribute("loginUser", "zhangsan");
        }
        Object loginUser = session.getAttribute("loginUser");
        if(loginUser == null){
            // 没登录,跳转到登录服务器进行登录
            // 跳转过去以后,使用url上的查询参数,标识我们自己是哪个页面
            // redirect_url=http://client1.com:8081/employee
            return "redirect:" + ssoServerUrl + "?redirect_url=http://client1.com:8081/employee";
        }else {
            List<String> emps = new ArrayList<>();
            emps.add("张三");
            emps.add("李四");
            model.addAttribute("emps", emps);
            return "list";
        }
    }

}

server.port=8081

sso.server.url=http://sso.com:8080/login.html

@Controller
public class LoginController {

    @Autowired
    StringRedisTemplate redisTemplate;

    @GetMapping("/login.html")
    public String loginPage(@RequestParam("redirect_url") String url, Model model){
        model.addAttribute("url", url);
        return "login";
    }

    @PostMapping("/doLogin")
    public String doLogin(String username, String password, String url){
        if(!StringUtils.isEmpty(username) && !StringUtils.isEmpty(password)){
            // 登录成功,跳回之前页面

            //把登录成功的用户存起来
            String uuid = UUID.randomUUID().toString().replace("-", "");
            redisTemplate.opsForValue().set(uuid, username);
            return "redirect:" + url + "?token=" + uuid;
        }
        // 登录失败,展示登录页
        return "login";
    }
}

 

server.port=8080

spring.redis.host=192.168.150.137

spring.redis.port=6379

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值