在基于spring security oauth2搭建了认证授权中心之后,Spring security oauth2默认提供了授权页面,但较为简陋,于是提高用户体验,我们需要自定义授权页面,首先我们需要先了解授权的流程。
授权首先是通过get
请求访问/oauth/authorize
接口,并携带相关参数,例如:
org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint
中authorize()
负责处理get请求的/oauth/authorize
:
1 | "/oauth/authorize") (value = |
如果isApproved为false,则调用getUserApprovalPageResponse
:
1 | private ModelAndView getUserApprovalPageResponse(Map<String, Object> model, |
这里: String userApprovalPage = "forward:/oauth/confirm_access"
即转发到/oauth/confirm_access
默认是由org.springframework.security.oauth2.provider.endpoint.WhitelabelApprovalEndpoint
类处理/oauth/confirm_access
请求,将用户引导到默认授权页(这里默认授权页是由代码渲染的html页面):
1 |
|
看到这里,我们就已经可以知道,想要自定义授权页,只需要替换掉默认的WhitelabelApprovalEndpoint
即可。
- 引入thymeleaf依赖,在resource下创建templates文件夹,再在templates文件夹创建一个grant.html文件:
1 |
|
- 在
applicaiton.properties
中配置thymeleaf:
1 | spring.thymeleaf.prefix=classpath:/templates/ |
- 创建处理
/oauth/confirm_access
请求的controller覆盖默认的WhitelabelApprovalEndpoint
:
1 |
|
至此,需要用户授权的/oauth/authorize
请求将会跳转到自定义的授权页面,就完成了自定义授权页面的开发。