﻿{"id":656,"date":"2020-04-22T16:07:13","date_gmt":"2020-04-22T08:07:13","guid":{"rendered":"http:\/\/blog.sway.com.cn\/?p=656"},"modified":"2020-04-22T16:07:13","modified_gmt":"2020-04-22T08:07:13","slug":"spring%e8%87%aa%e5%ae%9a%e4%b9%89%e6%b3%a8%e8%a7%a3%ef%bc%88method%ef%bc%89","status":"publish","type":"post","link":"http:\/\/blog.sway.com.cn\/?p=656","title":{"rendered":"Spring\u81ea\u5b9a\u4e49\u6ce8\u89e3\uff08method\uff09"},"content":{"rendered":"<p>\u5148\u5b9a\u4e49\u4e00\u4e2a\u6ce8\u89e3\u63a5\u53e3 VerifyToken.java \uff1a<\/p>\n<pre class=\"lang:default decode:true \">package com.zero4j.annotation;\r\n\r\nimport java.lang.annotation.*;\r\n\r\n@Target(ElementType.METHOD)\r\n@Retention(RetentionPolicy.RUNTIME)\r\n@Documented\r\n\r\npublic @interface VerifyToken {\r\n\r\n\t\/\/\u6743\u9650\u53c2\u6570\r\n\tString permission() default \"\";\r\n\t\r\n}\r\n<\/pre>\n<p>\u518d\u5728\u540c\u76ee\u5f55\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u5207\u9762\u7c7bVerifyTokenAspect.java\uff1a<\/p>\n<pre class=\"lang:default decode:true \">package com.zero4j.annotation;\r\n\r\nimport java.util.Enumeration;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport net.sf.json.JSONObject;\r\n\r\nimport org.aspectj.lang.ProceedingJoinPoint;\r\nimport org.aspectj.lang.annotation.Around;\r\nimport org.aspectj.lang.annotation.Aspect;\r\nimport org.aspectj.lang.annotation.Pointcut;\r\nimport org.springframework.stereotype.Component;\r\nimport org.springframework.web.context.request.RequestContextHolder;\r\nimport org.springframework.web.context.request.ServletRequestAttributes;\r\n\r\nimport com.zero4j.model.account.Account;\r\nimport com.zero4j.model.permission.util.PermissionStaticUtil;\r\nimport com.zero4j.model.token.util.TokenStaticUtil;\r\nimport com.zero4j.util.ResponseStaticUtil;\r\n\r\n@Aspect\r\n@Component\r\npublic class VerifyTokenAspect {\r\n\r\n\t@Pointcut(\"@annotation(com.zero4j.annotation.VerifyToken)\")\t\/\/\u8fd9\u662fannotation\u5bf9\u5e94\u7c7b\u7684\u6240\u5728\u4f4d\u7f6e,\u82e5\u76ee\u5f55\u4e0d\u540c,\u5219\u586b\u5199\u5b8c\u6574\u8def\u5f84,\u5982:com.zero4j.annotation.VerifyToken\r\n    private void pointcut(){\r\n\t\t\r\n\t}\r\n\t\r\n\t@Around(\"pointcut()&amp;&amp;@annotation(verifyToken)\")\r\n\tpublic void around(ProceedingJoinPoint pjp, VerifyToken verifyToken) throws Throwable{\r\n\t\t\r\n\t\t\/\/System.out.println(\"annotation\u6267\u884c\u524d\");\r\n\t\t\r\n\t\t\/\/System.out.println(\"verifyToken.permission() = \"+verifyToken.permission());\r\n\t\t\r\n\t\tServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();\r\n        HttpServletRequest request = attributes.getRequest();\r\n        HttpServletResponse response = attributes.getResponse();\r\n        \r\n        String token = request.getParameter(\"token\");\r\n        \r\n        JSONObject out = new JSONObject();\r\n\t\t\r\n\t\tif(token==null||token.equals(\"\")){\r\n\t\t\tout.put(\"status\", 401);\r\n\t\t\tout.put(\"message\", \"\u8bf7\u5148\u6ce8\u518c\u5e76\u767b\u5f55\u540e\u518d\u8fdb\u884c\u6b64\u64cd\u4f5c\");\r\n\t\t\tout.put(\"debug\", \"\u7f3a\u5c11\u53c2\u6570token\u6216\u4e3a\u7a7a\");\r\n\t\t\tResponseStaticUtil.write(response,out);\r\n\t\t\t\/\/System.out.println(out.toString());\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tAccount account = TokenStaticUtil.getAccount(token);\r\n\t\tif(account==null){\r\n\t\t\tout.put(\"status\", 401);\r\n\t\t\tout.put(\"message\", \"\u8bf7\u5148\u6ce8\u518c\u5e76\u767b\u5f55\u540e\u518d\u8fdb\u884c\u6b64\u64cd\u4f5c\");\r\n\t\t\tout.put(\"debug\", \"token\u5bf9\u5e94\u7684account\u4e3a\u7a7a\");\r\n\t\t\tResponseStaticUtil.write(response,out);\r\n\t\t\t\/\/System.out.println(out.toString());\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(!(verifyToken.permission()==null||verifyToken.permission().equals(\"\"))){\r\n\t\t\tif(PermissionStaticUtil.verify(account.getId(), verifyToken.permission())==false){\r\n\t\t\t\tout.put(\"status\", 403);\r\n\t\t\t\tout.put(\"message\", \"\u4f60\u65e0\u6743\u8fdb\u884c\u672c\u64cd\u4f5c\");\r\n\t\t\t\tout.put(\"debug\", \"\u4f60\u6ca1\u6709\"+verifyToken.permission()+\"\u6743\u9650\");\r\n\t\t\t\tResponseStaticUtil.write(response,out);\r\n\t\t\t\t\/\/System.out.println(out.toString());\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(out.size()==0){\r\n\t\t\tpjp.proceed();\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>\u6700\u540e\u5728\u9700\u8981\u5207\u5165\u7684\u5730\u65b9\u52a0\u4e0a\u6ce8\u89e3\u5373\u53ef\uff1a<\/p>\n<pre class=\"lang:default decode:true \">\t@VerifyToken(permission=\"adminLog_read\")\r\n\t@RequestMapping(value=\"\", method=RequestMethod.GET)\r\n\tpublic void list(HttpServletRequest request, HttpServletResponse response,\r\n\t\t\t@RequestParam(required=false) String token,\r\n\t\t\t@RequestParam(required=false) Integer offset,\r\n\t\t\t@RequestParam(required=false) Integer limit,\r\n\t\t\t@RequestParam(required=false) String startTime,\r\n\t\t\t@RequestParam(required=false) String endTime,\r\n\t\t\t@RequestParam(required=false) String accountNickname,\r\n\t\t\t@RequestParam(required=false) String accountMobile,\r\n\t\t\t@RequestParam(required=false) String description\r\n\t\t){\r\n\t\t\r\n\t\t........\r\n\r\n\t\t}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5148\u5b9a\u4e49\u4e00\u4e2a\u6ce8\u89e3\u63a5\u53e3 VerifyToken.java \uff1a package com &hellip; <a href=\"http:\/\/blog.sway.com.cn\/?p=656\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[201,196],"class_list":["post-656","post","type-post","status-publish","format-standard","hentry","category-java","tag-annotation","tag-spring"],"_links":{"self":[{"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=656"}],"version-history":[{"count":1,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions"}],"predecessor-version":[{"id":657,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions\/657"}],"wp:attachment":[{"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=656"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.sway.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}