package Ġcom . dx p . shiro . conf . core Ċ Ċ import Ġcom . dx p . shiro . common . Constants Ċ import Ġcom . dx p . shiro . common . Error Enum Ċ import Ġcom . dx p . shiro . web . vo . R Ċ import Ġcom . dx p . shiro . web . vo . R . Companion . err Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . apache . shiro . Security Utils Ċ import Ġorg . apache . shiro . web . filter . auth c . Form Authentication Filter Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġjavax . servlet . Servlet Request Ċ import Ġjavax . servlet . Servlet Response Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ /** Ċ Ġ* Ġ@ author Ġcar zy Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġå¯¹ æ²¡æľī çĻ»å½ķ çļĦ è¯·æ±Ĥ è¿Ľè¡Į æĭ ¦ æĪª , Ġ åħ¨éĥ¨ è¿ĶåĽŀ json ä¿¡æģ¯ . Ġ è¦ĨçĽĸ æİī shiro åİŁ æľ¬ çļĦ è·³è½¬ login . jsp çļĦ æĭ ¦ æĪª æĸ¹å¼ı Ċ Ġ* Ġ@ date Ġ 2 0 1 8 / 1 2 / 2 8 Ġ 1 0 : 2 4 Ċ Ġ*/ Ċ class ĠT mx Authorization Filter Ġ: ĠForm Authentication Filter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Access Denied ( request : ĠServlet Request , Ġresponse : ĠServlet Response ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhttp Servlet Request Ġ= Ġrequest Ġas ĠHttpServletRequest ĊĠĠĠĠĠĠĠ Ġif Ġ( http Servlet Request . method Ġ== ĠHttpMethod . OPTIONS . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprint Err Json ( Error Enum . E _ 7 0 2 , Ġresponse , Ġrequest ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Access Allowed ( request : ĠServlet Request , Ġresponse : ĠServlet Response , Ġmapped Value : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġallowed Ġ= Ġsuper . is Access Allowed ( request , Ġresponse , Ġmapped Value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( allowed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= ĠSecurity Utils . get Subject (). session ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġsession . getAttribute ( Constants . SESSION _ USER _ INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Err Json ( Error Enum . E _ 7 0 3 , Ġresponse , Ġrequest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġallowed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprint Err Json ( error Enum : ĠError Enum , Ġresponse : ĠServlet Response , Ġrequest : ĠServlet Request ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġrequest Ġas ĠHttpServletRequest ĊĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= Ġreq . getHeader (" Origin ") ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠR < *> Ġ= Ġerr ("", Ġerror Enum ) ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġresponse Ġas ĠHttpServletResponse ĊĠĠĠĠĠĠĠ Ġres . status Ġ= ĠHttpStatus . OK . value () ĊĠĠĠĠĠĠĠ Ġres . character Encoding Ġ= Ġ" UTF - 8 " ĊĠĠĠĠĠĠĠ Ġres . contentType Ġ= Ġ" application / json " ĊĠĠĠĠĠĠĠ Ġres . setHeader (" Access - Control - Allow - Origin ", Ġorigin ) ĊĠĠĠĠĠĠĠ Ġres . setHeader (" Access - Control - Allow - Headers ", Ġ" x - auth - token ") ĊĠĠĠĠĠĠĠ Ġres . setHeader (" Access - Control - Allow - Credentials ", Ġ" true ") ĊĠĠĠĠĠĠĠ Ġres . setHeader (" Access - Control - Allow - Methods ", Ġ" GET , DELETE , POST , PUT , OPTIONS , PATCH ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . writer . use Ġ{ Ġprint Writer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Writer . print ( MAP PER . writeValue AsString ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Writer . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error (" print Err Json ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( T mx Authorization Filter :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAP PER Ġ= ĠObjectMapper () ĊĠĠĠ Ġ} Ċ }