oauth2 demo 程序,使用了angularjs 1.x 和 springboot框架。
默认的用户名是 admin
, 密码是 111111
项目包括3个模块:
- authserver
- ui (oauth2 code flow的客户端应用)
- ui-implicit (oauth2 implicit flow的客户端应用,有一个独立的前端模块)
- ES6
- AngularJs 1.x
- webpack dev server hot-reload (通过在index.html中引用web-dev-server的js文件,在DEV模式下实现自动加载功能)
<% if (webpackConfig.metadata.ENV === 'dev') { %>
<!-- webpack dev server reload -->
<script src="http://<%= webpackConfig.metadata.host %>:<%= webpackConfig.metadata.port %>/webpack-dev-server.js"></script>
<!-- end webpack dev server reload -->
<% } %>
- Gradle 构建工具
- Spring Boot
- Spring security Oauth2
- Thymeleaf 模版引擎
注意 ui 模块和 ui-implicit 模块由于都用了8080端口,所以不能同时运行,每次只能运行一个模块。
git clone https://github.com/qihaiyan/ng-boot-oauth.git
cd ng-boot-oauth
cd authserver
./gradlew bootRun
cd ui
./gradlew bootRun
通过 http://localhost:8080
这个地址访问应用。
- 运行后端服务
cd ui-implicit
./gradlew bootRun
- 运行前端模块
如果是第一次运行程序,需要先安装依赖。
cd ui-implicit
npm install
依赖安装完成后,运行前端程序
cd ui-implicit
npm run dev
- CORS 问题
在DEV模式下运行 ui-implicit 前端模块时,如果采用webpack-dev-server的默认配置会出现CORS错误。
需要在webpack.config.js中调整dev-server的配置,调用后端API的代理也可以在这儿进行配置:
devServer: {
port: 3000,
contentBase: './src/main/frontend',
headers: {
'Access-Control-Allow-Origin': 'http://localhost:8080',
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Headers': 'authorization',
'Access-Control-Allow-Methods': 'GET'
},
// proxy: {
// '/user': 'http://localhost:8080/'
// },
},
通过 http://localhost:8080
这个地址访问应用。
编译和打包项目:
gradle build
运行 authserver:
cd authserver/
java -jar ./build/libs/ng-boot-oauth-0.0.1.jar
运行 ui 模块:
cd ui/
java -jar ./build/libs/ng-boot-oauth-ui-0.0.1.jar
或者是运行 ui-implicit 模块:
cd ui-implicit/
java -jar ./build/libs/ng-boot-oauth-ui-implicit-0.0.1.jar
通过 http://localhost:8080
这个地址访问应用。