好玩的代码倒计时
参考第三发接口文档,原理就是请求短信服务地址并设置http的请求头(服务地址,appcode,和method)和参数(验证码,模板,公司签名,手机号)
此处应注意不应该是页面直接短服务,而是页面ajax请求认证服务,认证服务远程调用短信服务发送验证码
注册页调用
2.认证服务的远程调用第三方短信服务发送短信并存入缓存并返回注册页面(接口放刷,验证码的再校验,配合redis实现)
3.提交注册表单到会员服务,验证通过进行数据库持久化
防止注册表单重复提交
注册成功后使用重定向防止注册表单重复提交,可使用RedirectAttribute redirectAttribute代替Model mode作为参数 为重定携带数据,利用session,将数据放到session中只要跳到下一个页面取出这个数据,session里面的数据就会被删除,
页面提交请求到认证服务,认证服务远程调用member
创建微连接设置应用名称等信息,设置回调地址(回调地址就是我们自己开发的应用)
1.引导需要授权的用户到如下地址:替换下面的client_id为我们应用的App Key,替换redirect_uri为我们的商城应用
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
2.如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3.换取Access Token(一个code只能换取一个Access Token)
client_id: 申请应用时分配的AppKey。
client_secret:申请应用时分配的AppSecret。
grant_type:请求的类型,填写authorization_code
redirect_uri: 回调地址,需需与注册应用里的回调地址一致。
code:第二步获取的code值
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
拿到Access Token之后就可以使用Access Token去访问所有微博提供的接口并获取信息
在调用微博接口时应注意要保证client_secret及Access Token的安全性(不可暴露)。
1.使用json(包含Access Token)在线格式转换将json转为javabean,并放入项目中
2.处理json(包含Access Token)转为我们生成的bean
根据json信息获取社交应用中的用户信息并插入数据库
使用json数据中的uid作为该微博帐户关联wwmall应用的唯一标识
每次使用社交登陆获取的Access Token值会变,但uid是相同的所以我们用uid关联社交应用与我们的应用
判断当前社交用户是否登陆过,如果是第一次就注册在系统中,如果不是第一次就直接登录
分布式session出现不共享原因
session原理
由于session的原理导致在分布式集群应用环境下导致session不共享问题
父域名wwmall.com ,子域名auth.wwmall.com, 子域名product.wwmall.com
子域名之间cookie是不能共享的。
我们在存取session时将浏览器需要存储的cookie域名都指定为父域名
引入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置文件配置
spring.session.store-type=redis #会话存储类型。
server.servlet.session.timeout =#会话超时。如果未指定持续时间后缀,则使用秒。
spring.session.redis.flush-mode = on_save#会话刷新模式。
spring.session.redis.namespace = spring:session#用于存储会话的键的命名空间
在主类上使用@EnableRedisHttpSession即可将session存在redis中
这将创建具有springSessionRepositoryFilter该实现名称的Spring bean Filter。该过滤器负责替换HttpSessionSpring Session支持的实现。
编写配置类设置cookie的domian属性,并设置序列化到redis的规则使用阿里提供的序列化器
自定义注解:
自定义拦截器
拦截器放行规则
将拦截器注入spring并定义拦截器拦截规则
注: SpringBoot2.0版本使用继承WebMvcConfigurationSupport 来扩展SpringMvc的功能
webmvc中常用方法
使用自定义注解标注在类上即可