发布于 2017-05-08 10:22:47 | 205 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

YMP 轻量级JAVA开发框架

YMP(yMatePlatform)开发框架是一套轻量级的JAVA应用开发框架,开发初衷只是想按自己的编码习惯,尽量采用最简单的方式实现我需要的东西,达到简化工作任务、统一开发流程为目标,能够减轻一点点的工作压力,让开发变成快乐的事!


经过很长时间的准备,将项目中用到的一些比较实用的模块进行提取重构,释放出来与大家分享!

如果她对你有帮助,也希望不吝收藏、点赞!当然,请我们喝杯咖啡也是好滴嘛 :p!

更希望大家多多关注YMP开源项目,在不改变编码习惯的同时,以简单、直接的方式解决问题,还会带给你似曾相识的感觉,不妨试试看,也许你会对她说:“相见恨晚”!

期待与大家交流学习!

第一波集中发布如下模块:

                模块名称                 描述
YMP-OAuth-Connector                 第三方OAuth授权登录模块
YMP-OAuth                 OAuth2授权服务模块
YMP-Captcha                 验证码模块
YMP-SSO                 单点登录模块
YMP-MailSender                 邮件发送服务模块
YMP-FileUploader                 文件上传及资源访问服务模块
YMP-WebProxy                 简单HTTP请求透传代理模块

 

YMP-OAuth-Connector:

第三方OAuth授权登录模块,目前已实现GitHub、Weibo、Baidu、Wechat、OSChina和QQ等;

示例说明:

# OAuth客户端ID, 必选项  ymp.configs.module.oauth.connector.github.client_id=<CLIENT_ID>    # OAuth客户端密钥, 必选项  ymp.configs.module.oauth.connector.github.client_secret=<CLIENT_SECRET>
http://<你的域名>/oauth/connect/github
  • 首先,你需要创建基于YMP框架的Web工程项目;(如何快速搭建工程?

  • 申请服务帐号,本例申请的是GitHub第三方授权(访问https://github.com/settings/developers进行申请):

  • 在申请过程中需要填写redirect_uri地址, 请填写:http://<你的域名>/oauth/connect/github/redirect;

  • 在Web工程中配置OAuth模块参数:

  • 最后,在浏览器地址栏输入如下URL进行测试:

了解更多YMP-OAuth-Connector内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-oauth-connector

YMP-OAuth:

OAuth2授权服务模块;

  • 支持客户端模式grant_type=client_credentials;

  • 支持授权码模式grant_type=authorization_code;

  • 支持密码模式grant_type=password;

  • 支持scope权限范围:snsapi_base和snsapi_userinfo;

  • 支持令牌更新:grant_type=refresh_token;

  • 支持令牌有效性验证;

  • 支持拦截器限制接口请求的scope权限:

    • 客户端授权拦截器:ClientAccessTokenCheckInterceptor.class

    • 用户网页授权拦截器:SnsAccessTokenCheckInterceptor.class

示例代码:

  • 通过拦截器限制接口请求scope的权限必须是snsapi_userinfo:

    @RequestMapping("/sns/userinfo")  @Before(SnsAccessTokenCheckInterceptor.class)  @ContextParam(@ParamItem(key = IOAuth.Const.SCOPE, value = IOAuth.Scope.SNSAPI_USERINFO))  public IView userinfo(@RequestParam(IOAuth.Const.ACCESS_TOKEN) String accountToken, @RequestParam(IOAuth.Const.OPEN_ID) String openId) throws Exception {      try {          return View.jsonView(OAuth.get().getModuleCfg().getUserInfoAdapter().getUserInfo(OAuth.get().bindAccessResourceHelper(accountToken, openId).getOAuthClientUser().getUid()));      } catch (Exception e) {          OAuthResponse _response = __responseBadRequest(IOAuth.Const.INVALID_USER);          return new HttpStatusView(_response.getResponseStatus(), false).writeBody(_response.getBody());      }  }
  • 客户端模式:

    • 以POST方式请求URL地址:

      http://localhost:8080/oauth2/token
    • POST请求报文:

      POST /oauth2/token HTTP/1.1  Host: localhost:8080  Content-Type: application/x-www-form-urlencoded  Cache-Control: no-cache    client_id=default&client_secret=7890123&grant_type=client_credentials
  • 授权码模式:

    • 获取授权码,以GET方式请求URL地址,成功则重定向并携带code授权码:

      http://localhost:8080/oauth2/sns/authorize?client_id=default&response_type=code&redirect_uri=http://localhost:8080/oauth2/sns/redirect&scope=snsapi_base&state=Helloworld
    • 接收到code授权码后,获取access_token令牌,以POST方式请求URL地址:

      http://localhost:8080/oauth2/sns/access_token
    • POST请求报文:

      POST /oauth2/sns/access_token HTTP/1.1  Host: localhost:8080  Content-Type: application/x-www-form-urlencoded  Cache-Control: no-cache    code=f32ab01222936356e5a8352b9beeacc3&client_id=default&client_secret=7890123&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Foauth2%2Fsns%2Fredirect
  • 密码模式:

    • 以POST方式请求URL地址:

      http://localhost:8080/oauth2/sns/access_token
    • POST请求报文:

      POST /oauth2/sns/access_token HTTP/1.1  Host: localhost:8080  Content-Type: application/x-www-form-urlencoded  Cache-Control: no-cache    client_id=default&client_secret=7890123&grant_type=password&username=suninformation&password=8fa6adcdaa9e50635c5bf54eacfca83a&scope=snsapi_userinfo
  • 令牌更新:

    • 以POST方式请求URL地址:

      http://localhost:8080/oauth2/sns/refresh_token
    • POST请求报文:

      POST /oauth2/sns/refresh_token HTTP/1.1  Host: localhost:8080  Content-Type: application/x-www-form-urlencoded  Cache-Control: no-cache    grant_type=refresh_token&refresh_token=207f2a5de46198dc8b42ba175e75cac1&client_id=default&client_secret=7890123
  • 令牌有效性验证:

    • 以GET方式请求URL地址:

      http://localhost:8080/oauth2/sns/auth?access_token=39ec0af0b9f5f7ebe2877389bb2919b4&open_id=6bf18fa2f9a136273fb90e58dff4a964
  • 获取授权用户基本信息:

    • 以GET方式请求URL地址:

      http://localhost:8080/oauth2/sns/userinfo?access_token=8fec1e7eca5d6e18b48d33f1725f6082&open_id=6bf18fa2f9a136273fb90e58dff4a964

了解更多YMP-OAuth内容,请访问码云:https://git.oschina.net/suninformation/ymate-module-oauth

YMP-Captcha:

验证码模块;

  • 支持图片、邮件和短信三种验证类型;

  • 支持多作用域验证生成;

  • 支持debug模式,该模式下短信不会被发送;

  • 支持根据限定条件判断是否启用验证码,如:请求n次后需要填写验证码;

  • 采用注解验证,配置简单、灵活,可自定义扩展;

示例代码:

  • 验证码注解@VCaptcha的使用

    @RequestMapping(value = "/login", method = Type.HttpMethod.POST)  public IView __doLogin(@VCaptcha(invalid = true)                         @RequestParam String captcha, // 验证码                           @VRequried                         @VMobile                         @RequestParam String mobile, // 手机号码                           @VRequried                         @VCaptcha(tokenId = ICaptcha.Const.TOKEN_SMS)                         @RequestParam String smscode, // 短信验证码                           @VRequried                         @RequestParam String passwd, // 登录密码                           @RequestParam(Optional.REDIRECT_URL) String redirectUrl) throws Exception {      // ...... 省略      return WebResult.SUCCESS().toJSON();  }
  • 验证码相关方法调用

    // 生成作用域为user.login的验证码  String _code = Captcha.get().generate("user.login");    // 销毁作用域为user.login的验证码  Captcha.get().invalidate("user.login");    // 判断是否开启错误记数,开启后将支持跳过参数验证  Captcha.get().isWrongTimesEnabled();    // 判断作用域为user.login的验证码是否允许忽略  Captcha.get().isValidationNeedSkip("user.login");    // 重置作用域为user.login的验证码错误计数器  Captcha.get().resetWrongTimes("user.login");    // 验证作用域为user.login的验证码是否匹配以及验证后是否使其失效  Captcha.get().validate("user.login", _code, true);

了解更多YMP-Captcha内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-captcha

YMP-SSO:

单点登录模块;

  • 一个拦截器搞定单点登录;

  • 支持Cookies、请求头或请求参数临时存储授权令牌;

  • 支持服务端和客户端两种模式;

  • 支持跨域身份验证;

  • 支持通过Ajax调用RESTFul API接口的身份验证;

  • 支持授权令牌加解密;

示例代码:

  • 获取当前用户的登录授权令牌对象:

    ISSOToken _token = SSO.get().currentToken();
  • 使用单点登录拦截器:

    @RequestMapping(value = "/user/profile/edit", method = Type.HttpMethod.POST)  @Before(UserSessionCheckInterceptor.class)  public IView __doEditUserProfile(@RequestParam String nickName, ......) throws Exception {      // ...... 省略      return WebResult.SUCCESS().toJSON();  }

了解更多YMP-SSO内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-sso

YMP-MailSender:

邮件发送服务模块,支持多帐号配置;

示例代码:

// 通过默认邮件服务发送:  MailSender.get().create()          .to("notify@demo.xxx")          .cc("ceshi@demo.xxx")          .bcc("someone@demo.xxx")          .subject("帐户注册成功通知邮件")          .send("恭喜你...");    // 通过指定的邮件服务发送:  MailSender.get().create("demo")          .to("boss@demo.xxx")          .subject("匿名")          .send("再不开响,服务器格式化啦!");

了解更多YMP-MailSender内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-mailsender

YMP-FileUploader:

文件上传及资源访问服务模块;

  • 支持文件指纹匹配,秒传;

  • 支持图片文件多种规则等比例压缩;

  • 支持视频文件截图;

  • 支持上传文件ContentType白名单过滤;

  • 支持主从负载模式配置;

  • 支持自定义响应报文内容(如:百度编辑器文件上传成功响应JSON报文结构);

  • 支持自定义扩展文件存储策略;

  • 支持跨域上传文件及用户身份验证;

示例代码:

  • 上传文件,以POST方式请求URL地址:

http://localhost:8080/uploads/push

参数说明:

    • file: 上传文件流数据;

    • type: 指定请求结果处理器,若未提供则采用默认,可选值:fileuploadbaidu

  • 文件指纹匹配,以POST方式请求URL地址:

http://localhost:8080/uploads/match

参数说明:

  • 返回值:

{ret: 0, matched: true}
    • hash: 文件哈希值(MD5),必选参数;

  • 文件资源访问,以GET方式请求URL地址:

http://localhost:8080/uploads/resources/{type}/{hash}

参数说明:

:若需要强制浏览器下载资源,只需在请求参数中添加?attach即可;

    • type: 文件类型,必选参数,可选值:imagevideoaudiotextapplicationthumb

    • hash: 文件哈希值(MD5),必选参数;

了解更多YMP-FileUploader内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-fileuploader

YMP-WebProxy:

简单HTTP请求透传代理模块,用于将本地请求转发至远程服务器并返回远程服务的响应结果;

  • 支持透传请求头黑、白名单过滤;

  • 支持请求黑名单过滤;

  • 支持响应头白名单过滤;

了解更多YMP-WebProxy内容,请访问码云:http://git.oschina.net/suninformation/ymate-module-webproxy

One More Thing

YMP不仅提供便捷的Web及其它Java项目的快速开发体验,也将不断提供更多丰富的项目实践经验。

了解更多有关YMP框架的内容,请访问官网:http://www.ymate.net/ 



历史版本 :
YMP v2.0.4 发布,轻量级 Java 应用开发框架
YMP v2.0.3 发布,轻量级 Java 应用开发框架
YMP Maven 扩展工具 v1.0 发布,快速搭建 Java 项目
YMP v2.0.2 发布,轻量级 Java 应用开发框架
YMP v2.0.1 发布,轻量级 Java 应用开发框架
YMP v2.0 模块项目集中发布!第一波!
YMP v2.0.0 发布,轻量级 Java 应用开发框架
YMP v2发布,轻量级Web开发框架
YMP v1.0 发布,轻量级 Web 开发框架
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务