package Ġdev . ent ao . ke b . core . account Ċ Ċ import Ġdev . ent ao . k ava . json . Y son Object Ċ import Ġdev . ent ao . ke b . core .* Ċ import Ġdev . ent ao . ke b . core . util . JWT Ċ Ċ var ĠHttp Context . userId Token : ĠLong Ċ ĉ get () Ġ{ Ċĉ ĉ return Ġ( this . prop Map [" _ userId Token _ "] Ġas ? ĠLong ) Ġ?: Ġ 0 L Ċ ĉ } Ċ ĉ set ( value ) Ġ{ Ċĉ ĉ this . prop Map [" _ userId Token _ "] Ġ= Ġvalue Ċ ĉ } Ċ Ċ var ĠHttp Context . token Model : ĠToken Model ? Ċ ĉ get () Ġ{ Ċĉ ĉ return Ġthis . prop Map [" _ token Model _ "] Ġas ? ĠToken Model Ċ ĉ } Ċ ĉ set ( value ) Ġ{ Ċĉ ĉ this . prop Map [" _ token Model _ "] Ġ= Ġvalue Ċ ĉ } Ċ Ċ // è§£æŀĲ åĲİçļĦ app ä¼ł æĿ¥çļĦ access _ token ĊĊ Ċ var ĠHttp Context . jwt Value : ĠJWT ? Ċ ĉ get () Ġ{ Ċĉ ĉ return Ġthis . prop Map [" _ jwt _ "] Ġas ? ĠJWT Ċ ĉ } Ċ ĉ set ( value ) Ġ{ Ċĉ ĉ this . prop Map [" _ jwt _ "] Ġ= Ġvalue Ċ ĉ } ĊĊ Ċ class ĠToken Model ( val Ġyo : ĠY son Object Ġ= ĠY son Object ()) Ġ{ Ċ ĉ var ĠuserId : ĠLong Ġby Ġyo Ċ ĉ var ĠuserName : ĠString Ġby Ġyo Ċ ĉ var Ġexpire Time : ĠLong Ġby Ġyo ĊĊ ĉ val Ġexpired : ĠBoolean Ċĉ ĉ get () Ġ{ Ċĉĉ ĉ if Ġ( expire Time Ġ!= Ġ 0 L ) Ġ{ Ċĉĉĉ ĉ return ĠSystem . currentTimeMillis () Ġ>= Ġexpire Time Ċĉĉ ĉ } Ċĉĉ ĉ return Ġfalse Ċĉ ĉ } Ċ } ĊĊ Ċ fun ĠHttp Context . make Token ( userId : ĠLong , ĠuserName : ĠString , Ġexpire Time : ĠLong ): ĠString Ġ{ Ċ ĉ val Ġts Ġ= Ġthis . filter . slice List . find Ġ{ Ġit Ġis ĠToken Slice Ġ} Ġas ? ĠToken Slice Ċĉĉ ĉ ?: Ġthrow ĠIllegal Access Error (" æ²¡æľī æī¾åĪ° Token Slice ") Ċ ĉ val Ġm Ġ= ĠToken Model () Ċ ĉ m . userId Ġ= ĠuserId Ċ ĉ m . userName Ġ= ĠuserName Ċ ĉ m . expire Time Ġ= Ġexpire Time Ċ ĉ return Ġts . make Token ( m . yo . toString ()) Ċ } Ċ Ċ // override Ġfun Ġon Init () Ġ{ Ċ // ĉ add Slice ( Token Slice (" 9 9 6 6 5 5 8 8 ")) Ċ //} Ċ class ĠToken Slice ( val Ġpwd : ĠString ) Ġ: ĠHttp Slice Ġ{ ĊĊ ĉ override Ġfun Ġbefore Request ( context : ĠHttp Context ) Ġ{ Ċĉ ĉ val Ġa Ġ= Ġcontext . request . header (" Authorization ") Ċĉ ĉ val Ġb Ġ= Ġa ?. substring After (" Bearer Ġ", Ġ"") ?. trim () Ġ?: Ġ"" Ċĉ ĉ val Ġtoken Ġ= Ġif Ġ( b . isEmpty ()) Ġ{ Ċĉĉ ĉ context . request . param (" access _ token ") Ġ?: Ġcontext . request . param (" token ") Ġ?: Ġreturn Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ b Ċĉ ĉ } Ċĉ ĉ if Ġ( token . isEmpty ()) Ġ{ Ċĉĉ ĉ return Ċĉ ĉ } Ċĉ ĉ val Ġj Ġ= ĠJWT ( pwd , Ġtoken ) Ċĉ ĉ context . jwt Value Ġ= Ġj Ċĉ ĉ val Ġm Ġ= ĠToken Model ( Y son Object ( j . body )) Ċĉ ĉ context . token Model Ġ= Ġm Ċĉ ĉ if Ġ(! m . expired ) Ġ{ Ċĉĉ ĉ context . userId Token Ġ= Ġm . userId Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ override Ġfun Ġaccept Router ( context : ĠHttp Context , Ġrouter : ĠRouter ): ĠBoolean Ġ{ Ċĉ ĉ if Ġ( router . function . is Need Token ) Ġ{ Ċĉĉ ĉ val Ġm Ġ= Ġcontext . token Model Ċĉĉ ĉ if Ġ( m Ġ== Ġnull ) Ġ{ Ċĉĉĉ ĉ context . abort ( 4 0 1 , Ġ" æľª çĻ»å½ķ ") Ċĉĉĉ ĉ return Ġfalse Ċĉĉ ĉ } Ġelse Ġif Ġ( m . expired ) Ġ{ Ċĉĉĉ ĉ context . abort ( 4 0 1 , Ġ" éªĮè¯ģ ä¿¡æģ¯ è¿ĩ æľŁ , è¯· éĩįæĸ° çĻ»å½ķ ") Ċĉĉĉ ĉ return Ġfalse Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġtrue Ċ ĉ } ĊĊ ĉ fun Ġmake Token ( body : ĠString ): ĠString Ġ{ Ċĉ ĉ return Ġmake Token ( body , Ġ""" {" alg ":" HS 2 5 6 "," typ ":" JWT "} """) Ċ ĉ } ĊĊ ĉ fun Ġmake Token ( body : ĠString , Ġheader : ĠString ): ĠString Ġ{ Ċĉ ĉ return ĠJWT . make ( pwd , Ġbody , Ġheader ) Ċ ĉ } Ċ } Ċ