代码拉取完成,页面将自动刷新
同步操作将从 微服务团队/网关服务 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
### 网关配置项: application.yml ``` security: #免过滤配置项,请使用 - ""语法。 ignored: - "*.bundle.*" server: session: #session超时时间(单位:分) timeout: 2 service: authentication: #关闭验证码校验(true/false) captcha: false #同一设备同一账号最大登录数,默认为1个 maximumSessions: 1 #根据登录账号验证用户信息类,支持多个(例如:账号,微信),请使用 - ""语法。 authenticateAction: - "com.klxedu.ms.gateway.security.authentication.impl.DefaultAuthenticateAction" - "com.klxedu.ms.gateway.security.authentication.impl.WXAuthenticateAction" #资源服务类,获取系统中所有资源及关联的角色,用于访问权限判断 resourceService: com.klxedu.ms.gateway.security.access.impl.ResourceService #角色服务类,根据用户标识获取当前用户所拥有的角色权限 roleService: com.klxedu.ms.gateway.security.authentication.impl.AuthenticateRolesImpl #可设置验证码长度 captchaSize: 4 #可设置验证码超时时间(单位:秒) captchaTimeout: 5000 ``` ### 登录方式: > 登录地址:http://localhost:{port}/user #### 200:登录成功 ``` { "authenticated": true } ``` 需要在访问时,将用户名和密码Base64后放入Header中传递。 例如: ``` gr:gr Base64后为 Z3I6Z3I= header("Authorization", "Basic Z3I6Z3I=") ``` **注:记得一定要加上“Basic”** ### 登出方式: 登出地址:http://localhost:{port}/logout ``` # 200:登出成功 { "data": null, "code": "2000", "message": "logout success" } ``` ### CRSF防攻击处理 csrf又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点。 在所有GET请求后会返回一个csrftoken,该token放在Header中,并在 **除GET, HEAD, TRACE, OPTIONS外** 的所有请求中需要将该token回传 Get请求Header中Cookie的key为:XSRF-TOKEN 提交请求有两种方式 1、通过Header方式token回传,需要在Header中使用 X-XSRF-TOKEN 为Key,Value为Cookie中XSRF-TOKEN的值,同时Cookie也需要回传。 2、通过parameter方式token回传,需要在请求后使用 _csrf 为Key,Value为Cookie中XSRF-TOKEN的值,同时Cookie也需要回传。 ### 验证码: 验证码图片获取方式:http://localhost:{port}/generateCaptchaImage 验证码获取方式:http://localhost:{port}/generateCaptchaNum 提交验证码时的参数名称:http://localhost:{port}/user?captcha={num} ### 扩展点: authenticateAction、resourceService、roleService 三种扩展方式,参考默认实现类,实现相应的接口,并在配置项中替换默认配置 ### 微服务获取用户信息方式: 由于网关在前面做了代理作用,所以微服务需要通过网关转发请求过来,在转发的过程中,网关会将用户的信息保存在Header中传递给微服务应用,因此微服务不再需要从Session中获取信息。 request.getHeader("authService.USERID") //用户ID request.getHeader("authService.DEPARTID") //用户部门ID request.getHeader("authService.LOGINID") //用户登录账号 request.getHeader("authService.SCOPECODE") //用户当前管理范围 ### 微服务配置项: 微服务所有请求不加权限控制,要求部署在内网环境下,所有访问必须通过网关转发,出于安全性考虑,微服务地址必须配置为127.0.0.1 server.address: 127.0.0.1 ### Http Status 错误编码: #### 401:未登录、登录超时 访问授权资源 ``` { "timestamp": 1531967339307, "status": 401, "error": "Unauthorized", "message": "Full authentication is required to access this resource", "path": "/user" } ``` #### 401:用户名或密码错误 ``` { "timestamp": 1531967907786, "status": 401, "error": "Unauthorized", "message": "用户不存在: gr", "path": "/user" } ``` #### 403访问未授权请求 ``` { "timestamp": 1531967793534, "status": 403, "error": "Forbidden", "message": " 没有权限访问! ", "path": "/user_admin" } ``` #### 405不支持的访问方式 > 该情况出现在资源访问方式未被配置在资源管理中,参考com.klxedu.ms.gateway.security.access.impl.ResourceService类 ``` { "timestamp": 1533180654768, "status": 405, "error": "Method Not Allowed", "exception": "org.springframework.web.HttpRequestMethodNotSupportedException", "message": "Request method 'POST' not supported", "path": "/user_admin" } ``` #### 500:验证码验证失败或账号被另一账号代替 ``` { "timestamp": 1531967040294, "status": 10001, "error": "Http Status 10001", "message": "验证码校验失败。", "path": "/user" } { "timestamp": 1531968332807, "status": 10002, "error": "Http Status 10002", "message": "相同的账号已在其它设备上登录,请重新登录。", "path": "/user" } { "code":"10003", "message":"请求/api-ouser/workbench/organization重复提交" } -- 10001 验证码校验失败 -- 10002 账号冲突 -- 10003 重复提交 ``` ### 管理范围接口 #### 查询当前用户管理范围 - 请求地址:http://{ip}:{port}/user/listScope - 请求方式:GET - 返回格式 ``` {"data":[{"SCOPE_CODE":"-1/5","ORGANIZATION_NAME":"测试机构1"},{"SCOPE_CODE":"-1","ORGANIZATION_NAME":"组织机构树"}],"code":"2000","message":null} ``` #### 设置用户管理范围 - 请求地址:http://{ip}:{port}/user/setScope - 请求方式:GET - 参数:scopeCode=xx
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。