搜尋

搜尋結果

【澳門】邱吉爾餐廳 Churchill’s Table ~ 朝聖近超火爆「奇幻仙境下午茶」
生活在我城
80後愛旅行✈️・2021-03-06

邱吉爾餐廳 Churchillrsquo;s Table 位於澳門倫敦人內,是一家全天候餐廳, 包括豐盛的國際自助早餐、地中海式午餐及晚餐單點菜餚、傳統英式下午茶和晚餐時段供應的特色甜品體驗。 當中,最吸引大家的就是以童話故事「愛麗斯夢遊仙境」為主題的「奇幻仙境下午茶」!! 「奇幻仙境下午茶」只在週末和節日才供應,所以目前已經預訂到半年後的時間了~ 很幸運的我在農曆新年期間可以品嚐到這個「奇幻仙境下午茶」hearts; 邱吉爾餐廳 Churchillrsquo;s Table 的位置在倫敦人「水晶金殿」廣場上 餐廳大門很有英倫風,猶如瑰麗的酒店大堂一樣。 品嚐下午茶之前,先來欣賞一下餐廳的裝潢。 等著被 Serve 到大家餐枱上的漂亮 Tea set 餐廳的天花很美,從座位上看出去還可以看到「水晶金殿」上樓高10層的「相愛之神」。 超美的「奇幻仙境下午茶」 Tea set hearts; 基本上在網上見到的都是我們枱上的這一款 uarr; ,但被我發現了下面這一款不一樣的Tea set 架 顏色、花紋不一樣,但都是同一款的「奇幻仙境下午茶」。應該是這天人太多所以Tea set 架不夠用。 這是「奇幻仙境下午茶」的Menu 之前在網上一直都看到說這個「奇幻仙境下午茶」不好吃,只能打卡用, 但我覺得很好吃呀!! 個人覺得比 「瑞吉酒吧(St. Regis Bar)」更好吃!! Tea Set 架上的「愛麗斯神秘藥水」味道有點像「柑桔綠茶」,當吃甜品吃得有點膩時可以喝一口。 一個 Tea set 供2人份,包兩杯茶。 「奇幻仙境下午茶」除了好吃又好打卡外,最特別是下午茶包含了很多魔術的元素。 在選茶的時候是一個魔術時間,你想要的口味的茶會在這些紙牌中變出來! 連放糖的盒子都是音樂盒來的,真的很夢幻~ 其實在用餐期間還有幾個魔術表演,在這裡的就不詳述,留給你們親自體驗了~!! 這是「奇幻仙境下午茶」以外的甜品,是「豬仔錢罌」,要把它敲碎 餐廳的另一個用餐區,這邊不是享用「奇幻仙境下午茶」的客人。 當然,也不要錯過餐廳內的零售商店,內有各種自家品牌的糕點、糖果、咖啡、果醬、茶葉、朱古力、蛋糕等可供外賣帶走。 邱吉爾餐廳 Churchillrsquo;s Table 邱吉爾餐廳 Churchillrsquo;s Table:澳門倫敦人1樓 上午700至凌晨1200 httpshk.londonermacao.commacaurestaurantschurchillstable.html httpsassets.sandsresortsmacao.cncontentlondonermacaorestaurantschurchillstablechurchillstable_weekendspecial_madhattersafternoonteamenu.pdf

西藏】※景點※ 巴松措 / 八松錯 ~ 不是藍色而是碧綠色高原翡翠湖
走遍世界
80後愛旅行✈️・2021-02-21

巴松措 八松錯 又名措高湖, 藏語中是「綠色的水」的意思, 位於中國西藏自治區工布江達縣東部, 是一座冰川堰塞湖 巴松措在1994年被評為國家風景名勝區, 同時被世界旅遊組織列入世界旅遊景區 我去的時候, 巴松措還是國家4A級景區 如下圖, 但是在2017年8月這裡已經成為西藏首個也是目前唯一的自然風景類國家5A級旅遊風景區囉 巴松措長約18公里, 湖面面積約27平方公里, 最深處達120米, 湖面海拔3480米。 我們就只參觀了「湖心島 扎西島」週邊的區域 中間這個由兩條寬約2米的浮橋連接著的, 就是「湖心島 扎西島」 傳說湖心島是quot;空心島quot;, 就是說島與湖底是不相連而是漂浮在湖水上的 這就是連接湖心島的浮橋, 站在浮橋上會感覺到橋面微微搖晃, 還真有整個島都浮在湖水上的錯覺呢 西藏有許多聖湖, 例如納木措、羊卓雍措等, 這些湖泊的湖水普遍都是藍色的, 但巴松措的湖水卻是令人心動的翡翠綠色, 這就是巴松措的獨有景觀了吧 走過浮橋到達湖心島後, 島上有一座有名的「措宗寺 措宗貢巴寺」, 是「湖中城堡」的意思 而寺廟門前放著生殖崇拜的木刻 進入寺廟前要先穿上鞋套, 但寺內不能拍照 寺廟屬木石結構, 分上下兩層, 供有許多的佛像。 走出寺廟外, 繞湖心島一圈 又是一隻被假裝成藏獒的狗 在措宗寺旁有這棵「千年青崗樹」, 這樹已經有1300多年歷史 據說這樹的樹葉上有自然形成的藏文字母, 令這裡蒙上一層神秘的色彩 據說因為巴松措是聖湖, 所以水面上沒有一片樹葉 實際上真的沒有 加上陽光照射在湖面上映照出的璘光, 非常美麗 巴松措 巴松措 西藏自治區拉薩市錯高鄉 檢視較大的地圖

川味推介 | 入寬窄巷子紙上“食魚”,過年不打烊領略地道四川味!
澳城餐飲
食在澳門iFood・2021-02-17

寬巷子、窄巷子 組成濃濃巴蜀文化的寬窄巷子 現在已經成為四川的特色 而提及四川美食 熱情的紅色與火辣的口味 似乎近在眼前與嘴邊 ▽ 01 紙包魚.蒜香味 作為店內TOP SALE的紙包魚,其實係韓國紙上烤肉與重慶萬州烤魚的完美融合體。 開封 散熱 享用 不同於傳統烤魚,紙包魚不單止keep住魚肉風味,仲掀起健康吃魚的熱潮!鐘意蒜香味的朋友仔,唔好錯過哩份紙包魚喇! 薄薄一層錫紙,藏得住魚身,卻釋放出魚香,劃開錫紙,濃重的蒜香味同魚香味驟然四起,令人食慾大開!鮮嫩肉質、入味至極,讓你欲罷不能! 02 紙包魚.牛油火鍋味 濃郁的紅油湯底浸潤著魚的每一吋肌膚,令到魚肉的紋理深處都得到滲透入味。 適口的辛辣、上頭的油香、富有衝擊力的火紅色,統統激起食客的食慾!而且除咗魚肉本身,眾多配菜令你驚喜加倍 鴨血 餐肉 毛肚 黃喉 滑捋捋的鴨血、沉甸甸的午餐肉、脆蔔蔔的毛肚與黃喉,都為哩份紙包魚增添咗別樣的色彩,讓你食過返尋味! 03 乾鍋排骨 乾鍋料理亦係四川餐檯上必不可少的一味餸。一鍋滿載排骨的乾鍋,用油香四溢勾引你的食慾。 哩味乾鍋排骨,過人之處係雖然辛香,但辣味卻唔會蓋過排骨的酥香。香脆的花生、花菜等更增添咗咀嚼時候的層次感,齒頰留香。 04 奶酪魚條 精選魚柳裹上炸衣,點上奶酪醬,口感脆香柔潤,奶香味濃郁十足。香脆中包裹著嫩滑的感覺,奶酪中瀰漫魚肉鮮味、魚味中夾雜奶酪醇厚,食而忘我。 05 辣子雞 當紅辣子雞係經典四川名菜,將雞肉切丁再添入乾辣椒、鮮蔥、芫茜等同炒,極具風味特色! 啖啖嫩香的辣子雞,入口麻辣爽口、鮮香純鮮,仲略帶微微回甜,令人食髓知味。 06 紅油缽缽雞 沒有雞的缽缽雞係地道的四川樂山名菜!清脆爽口的冷串配上辣味至極的紅油汁料,饞嘴可口,零捨過癮 過年不打烊 寬窄巷子全年無休!過年不打烊! 可到店堂食亦可外賣到家齊齊享用! 到店堂食的顧客,即可獲贈汽水一罐。 寬窄巷子 地址:澳門筷子基綠楊花園內(廣慈醫療中心旁) 電話:62862662 圖文|艾迪捧的一粒飯 攝影|嚕嚕米

【澳門】※行山路線※ 金像步行徑 金像農場 ~ 澳門另類打卡點 健康休閒路線 別有洞天
生活在我城
80後愛旅行✈️・2020-07-08

2020年的夏天,澳門有一個「洞」成為了網紅,是一個全新的打卡地點。 這位「網紅」位於金像步行徑內。 「金像步行徑」位於路環西南端,於2020年4月才對外開放,全長約1150米,是一條循環式步行徑。 旁邊為另一個休閒學習場所「金像農場」 要開車來金像步行徑,可以泊在下圖巴士站後方的咪錶位,大概只有4、5個車位,假日車位非常緊張。 坐巴士的話就直接在下圖下車。 進入金像農場內,就會見到「金像步行徑」 「金像步行徑」全長只有約1150米,如果只計算走路的話,可能15分鐘就能走完。 而「金像步行徑」不像我之前介紹過的黑沙水庫家樂徑、路環健康徑、路環步行徑等會和其他步行徑相連, 所以真的不用走很長的時間,非常適合帶小朋友一起來。 「金像步行徑」一開始就是上!樓!梯! 頭一段是不停的上樓梯 行動不便的人就不建議來「金像步行徑」了 終於來到C52了,要記住由一開始的C51至C52全是上樓梯的,請按個人體力來運動! 一上完樓梯基本上就聽到很多人聲,就知道拍照的地方要到了!! 打卡的地方就是一上到C52就到了!這是在地下的一個洞,目前人有點多,我就決定先走一圈「金像步行徑」再回來拍照。 從剛剛的地圖會看到,「金像步行徑」的路是一個圓形的,就是一條循環式步行徑。 走過黑沙水庫家樂徑、路環健康徑、路環步行徑,我還是很喜歡看到海的地方,大海真的是百看不厭 下面的小屋就是豪宅 $$$ 「金像步行徑」後段其實非常平坦,兩邊都是本澳樹種:楓香、山烏桕及木荷。 但相對地整段路都再看不到海景了~ 後段路確實有點無聊,快快走完就回到剛開始上完樓梯的地方。 還是一樣有很多人在排隊打卡~打卡的地方就是在一個小小的斜坡下,來打卡的人已經開出了一條小小的路徑下去,相對還是安全的。 我也要下去排隊了~!! 下來後就會看到這個傳說中的「洞」了!! (真的覺得發現這裡的人很厲害) 從這個洞往外看可以看到海景,簡直是別有洞天,風景很美很特別! 這個地方畢竟不是正規的步行路線,請按個人決定並小心而行。 金像步行徑 金像步行徑:路環竹灣馬路 httpsnature.iam.gov.moctrailsdetail4bdc988bed26471db3322be7815584b6 檢視較大的地圖

【Vlog】遇見超多日本妹 仲一齊拍埋片?!|《歡樂旅旅旅-中山篇(上)》
歡樂馬介休
bacalhau・2019-04-15

原來中山有一個地方,充滿各國風情 仲有好多日本妹子~ 咁大誘惑,到底佢地能否完成任務平安返黎呢? 【歡樂馬介休首個即興旅遊節目】 《歡樂旅旅旅》 龍哥 黑Gap RICO 三個精壯的男人 車票未買、酒店未訂、荷包就乾~ 旅程中要完成不同任務先可以返澳門! ▲今次旅旅旅地點 中山 歡樂旅旅旅! 俾人旅旅旅! ※想佢地下次去邊?就記得留言話俾IRIS同啊鎔知啦! ▼覺得好睇就記住喺Facebook同Youtube Likeamp;Share 喺埋條片下面留言 同埋㩒埋個鈴鈴,下集見! 快快訂閱【歡樂馬介休Youtube專頁】 右上角紅色訂閱按鈕啊BB 速速讚好【歡樂馬介休Facebook專頁】 httpsgoo.gl5y9aWC 慢慢追蹤【歡樂馬介休Instagram專頁】 httpsgoo.glkHYhRc 齊齊聊天【歡樂馬介休Facebook群組】 httpsgoo.glxwKkno 〔馬介休女玩員粉絲專頁〕 BOBO粉絲團:httpsgoo.glSSZsgL 啊花粉絲團:httpsgoo.gl8nyf5i VIVI粉絲團:httpsgoo.glB75RKm 芊華粉絲團:httpsgoo.glg6fjb6 〔馬介休男玩員粉絲專頁〕※就睇下有無人like男仔 龍哥粉絲團:httpsgoo.glRMn4eX 華浚粉絲團:httpsgoo.glFc2Zbw 黑GAP粉絲團:httpsgoo.glvi5XTU RICO粉絲團:httpsgoo.gl2mjPeV 靚仔達粉絲團:httpsgoo.glnUarBR 微信公眾號/微博/騰訊視頻/土豆網/美拍:欢乐马介休 #旅行 #日本妹 #Vlog

【新加坡】§美食§ 無招牌海鮮 No Signboard Seafood (Vivo City 怡豐城店) ~ 必食辣椒蟹 美味難以忘懷!
全球飲食
80後愛旅行✈️・2018-09-28

無招牌海鮮No Signboard Seafood這個特別的名字, 相信去過新加坡或者看過新加坡資料的人都不會陌生。 無招牌海鮮創立於1981年, 是由真正沒有招牌的小販起家, 到現在已有多間分店。 其原創新穎的菜單蜚聲新加坡, 其中必試的有富新加坡特色的辣椒蟹和黑胡椒蟹。 我們去的是怡豐城Vivo City的分店 Vivo City就是坐捷運去聖淘沙環球影城的商場 我們去完環球影城回來就吃大餐了 我們去到的時候是晚上1900多 在沒有訂位的情況下竟然有位置, 實在太幸運了 想確保有位置最好還是先預約 ► 無招牌海鮮餐廳 濱海藝術中心/怡豐城/克拉碼頭 No Signboard是小販起家的, 但現在已經是有多間分店的飲食集團 Vivo City店的裝修真的很金碧輝黃, 也加上了不少的中華元素 這裡最有名的是辣椒蟹和黑胡椒蟹, 兩個人點一隻螃蟹再加上一兩個小菜, 絕對是完美一餐 我們就點了Chilli Crabs 辣椒蟹, 一個甜酸排骨, 再一個炒飯, 真的吃得超飽的 Chilli Crabs 不單止蟹好吃, 連醬汁都一樣超美味, 它的醬汁不會太辣, 但非常有層次, 拿來送飯一個人絕對能吃兩碗 最後附上部份餐牌 看看這裡的蟹有超多種吃法, 每次去新加坡都吃也不會厭 就算是不吃辣的朋友也能吃到美味的蟹 No Signboard Seafood No Signboard Seafood 1 Harbourfront Walk, #0302 VivoCity, Singapore 098585 電話 656563769959 營業時間 11002230 網址 httpwww.nosignboardseafood.com 交通 地鐵CC、NE線至HarbourFront站 檢視較大的地圖

【希臘。聖托里尼】§美食+美景§ 伊亞 Oia Lioyerma Lounge Cafe Pool Bar ~ 池畔美景 海天一色 渡假休閒之選
走遍世界
80後愛旅行✈️・2018-09-26

「Lioyerma Lounge Cafe Pool Bar」是在聖托里尼伊亞Oia的最頂端, 就在我們的酒店前面 第一天來到聖托里尼, 到酒店放下行李後就出來覓食了 從酒店出來就見到這間超漂亮的池畔餐廳, 我們就進來囉... 這就是Lioyerma Lounge Cafe Pool Bar的範圍, 喜歡的可以在泳池暢泳, 不想游泳的坐在陽傘下看海, 真的身心舒暢 餐廳內還有一隻船呢 池畔餐廳有很多位置, 都可以隨便坐。 這麼難得來到聖托里尼, 當然要坐近海邊, 靠近美景 我去的時候是5月, 其實還蠻涼的, 大概20幾度吧, 完全不想下水 但是外國人不這麼怕冷 看到他們都有游泳, 享受Relax的假期 diams; 聽說只要點一杯飲料, 就可以在這裡暢泳囉 不打算游泳的我們就坐著, 看看風景, 吃遲來的午餐 本來想坐望海的「雅座」, 就是照片最右邊的那些, 可是聖托里尼的太陽真是太毒, 沒有太陽傘的話真的會被烤焦 最後還是乖乖坐在傘下就好了 「Lioyerma Lounge Cafe Pool Bar」的位置真的一絕 建議日落的時候也可以來這邊, 這也是看日落的一個好地方 網上對這間餐廳的風評好壞參半, 好的就是風景真的很美 而壞的就是這裡的服務不太好, 其實可能是這裡的生活方式不像我們這麼緊湊 他們都會放慢步伐, 所以我們的午餐也在點餐後快1個小時才到 餓死寶寶了... 我們只點了些輕食, 填填肚子就算, 打算晚上再吃大餐 Lioyerma Lounge Cafe Pool Bar Lioyerma Lounge Cafe Pool Bar Omicron;ίalpha;, Sigma;alpha;nu;tau;omicron;rho;ίnu;eta; 847 02 Greek 電話 30 2286 071190 營業時間 1000 0000 網址 httpwww.lioyerma.gr 檢視較大的地圖

Goa Nights「果阿之夜」 澳門時尚印度小吃餐廳及手雞尾酒酒吧登陸氹仔舊城區
澳城餐飲
LifeMag Editor・2018-03-24

以嶄新的酒吧體驗,展開印度美食之旅 澳門氹仔舊城區欣然宣佈,全新印度小吃酒吧餐廳 Goa Nights「果阿之夜」隆重開幕。餐廳為顧客提供糅合經典與現代的印度菜式及調配別具特色的雞尾酒。 名副其實,Goa Nights 的菜式以時尚風格,引進傳統而嶄新的印度及果阿風味佳餚,配合一系列極具創意的雞尾酒,讓顧客感受異國風情。Goa Nights 內的波希米亞風格的調酒吧,由屢獲殊榮的印度調酒師 Chetan Gangan 帶領下,為顧客調製出各式各樣極具創意的手工雞尾酒。Gangan 於 2017 年度 Bacardi Legacy 獲得亞軍,同年更榮獲 Belvedere Vodka Relearn Natural 雞尾酒比賽之冠軍。美味的印度風味菜單由來自印度具豐富經驗的廚師團隊烹調,菜餚擺設由澳門著名的葡萄牙大廚 Andre Correia 設計,Andre 曾主理多間澳門高級餐廳,包括新濠天地蘇濠的 T for Tapas 餐廳和澳門銀河的 The Apron 蠔吧扒房。 酒保及調酒師 Chetan Gangan 氹仔城區有限公司市場推廣副總監陳詠璇表示:「Goa Nights 的開幕能為氹仔舊城區帶來獨特的印度風味,我們為此而感到高興。這家小吃酒吧餐廳不僅令氹仔舊城區的餐飲業面貌生色不少,也為本地及國際旅客帶來嶄新的餐飲體驗。氹仔舊城區擁有多元化的美食,進一步奠定澳門獲聯合國教科文組織UNESCO評為『創意美食之都』的榮譽,為顧客帶來更多國際佳餚選擇。」 位於氹仔舊城區的中心地帶,這座樓高三層的餐廳提供一系列精選的酒吧小吃和主菜,配合極具創意的招牌雞尾酒,誘發顧客之味蕾。特色酒吧小吃包括果阿之夜烤雞肉配粟米片、烤雞迷你漢堡、拉法炸魚;此外還有叫人垂涏欲滴的主菜如印度鐵路咖喱羊肉及酸咖喱豬肉。菜餚配上 Gangan 親手調製的特色雞尾酒,包括 Lisbon、Calicut、Mozambique、 Mombasa 等,每款雞尾酒分別以一種香料、水果或烈酒製成,並按數字排列在葡萄牙航海家 Vasco de Gama 的航海地圖上,一同經歷其發現果阿之旅程。 印度香料美食集團 Indian Spice Group 東主 Gagan Sethi 表示:「我們的餐廳 Indian Spice 在澳門開業以來極受歡迎,現在能將業務擴展至氹仔舊城區,我們為此感到非常興奮。靈感源自前葡國殖民地果阿的時尚印度小吃酒吧餐廳,Goa Nights 的進駐將令氹仔舊城區的餐飲發展更上一層樓。」 隨着 Goa Nights 開業,將繼續帶動氹仔舊城區成為澳門首選的美食旅遊目的地,提供各種本地及國際佳餚,滿足不同的消費群。Goa Nights 進一步奠定氹仔舊城區致力推動餐飲文化的理念,對澳門非搏彩旅遊業的可持續發展作出重大貢獻。 Goa Nights 地址:澳門氹仔告利雅施利華街 118 號 營業時間:星期二至星期日,晚上 6 時至凌晨 1 時 訂座電話:853 2856 7819 電郵:contact@goanights.com

你喝對水嗎?飲用水3個錯誤觀念
專題報導
Chrysalids 少爺・2017-08-17

從朋友處得悉一個有趣的職業,紅酒有專業的嚐酒師,而咖啡則有舌頭靈敏的品味師。但原來我們身邊看似淡而無味的水,也有品水師,喝水也能變成一種職業,那麼我們每天喝對了水嗎? 水, 飲水, 喝水, 健康飲品, 飲用水 人體含有80%的水分。補充水分能夠有助於維持皮膚的健康。角質層若維持1030%的水分,皮膚會顯得有光澤和水潤。但當皮膚耗損10%的水分時,爆拆和乾裂等問題就會一一出現,甚至引發乾燥性皮炎。 水, 飲水, 喝水, 健康飲品, 飲用水 中藥學巨著《本草綱目》提到:「藥補不如食補,食補不如水補。好水是百藥之王。」水的分類林林總總,有井泉水、流水、河水等,喝甚麽樣的水對人最有好處呢?事實上水的潔淨是飲用水最基本條件。 水, 飲水, 喝水, 健康飲品, 飲用水 香港水務署確保香港食水供應的品質安全,而由於水經過大廈的水缸、水道、水管等,或多或少會有一些雜質,所以建議大家精明地選擇一個適合的濾水器詳情可參看較早前消委會的濾水器測試報告。最近剛剛搬屋,新居的廚房我也特意花了數千元買了一個濾水器。雖然貴了點,但是這個投資我認為是值得的。 水, 飲水, 喝水, 健康飲品, 飲用水 此外,一般人都會對飲用水有些錯誤的概念: 1. 每日8杯水「8杯水」只是一個概念。水的來源包括飲用水、湯、果汁及食物中的水分含量。每個人所需的水量會因應體質、年齡、氣候、地域等因素而不同。 水, 飲水, 喝水, 健康飲品, 飲用水 在中醫的角度,人體的脾胃主要負責輸送水液及營養物質到身體不同部分,包括皮膚。脾胃功能弱的人,經常會覺得喝很多水都不夠而變成一種強迫性的喝水習慣Compulsive drinking。因此保持脾胃的運作正常是最要緊的。 水, 飲水, 喝水, 健康飲品, 飲用水 2. 使用電熱水瓶 一般我是不主張用電熱水瓶的。有不少研究顯示,水在不斷的煮沸翻煲時,會出現水老化的現象,同時會釋放有害物質。同時隔夜的水最好不要喝,因為放久的水容易會滋生細菌。 水, 飲水, 喝水, 健康飲品, 飲用水 3. 喝偏鹼的水有助健康剛於這個問題我翻查了幾本的書籍及徵詢了兩位資深醫生的意見,答案是人體的pH值是在一個恆定的狀態,不可能喝一些飲品或吃一些食物便能改變。 水, 飲水, 喝水, 健康飲品, 飲用水 我們的肺臟及腎臟有足夠能力能維持身體的酸鹼平衡,只有醫學上的某些藥是要透過調節尿液的pH值來減輕腎石生成的情況。最近我在市面上買了不同類型的瓶裝水作研究。一般在pH值77.5間的水口感最好。 水, 飲水, 喝水, 健康飲品, 飲用水 這段學習茶道的日子裏,深深感受到「八分之茶遇水十分,茶亦十分;八分之水,試茶十分,茶只八分」的說法。無論是否泡茶,質量好的水除了有助身體及皮膚的健康外,確實會令飲品或食物生色不少。 以上文章及圖片均轉載自網路,所有版權歸原作者所有 原文地址:httpshk.style.yahoo.com

京都】├住宿┤ Super Hotel 超級酒店 烏丸五条店 ~ 離京都駅一個車站 價錢相對划算酒店
走遍世界
80後愛旅行✈️・2022-08-18

Super Hotel 超級酒店是日本大型的連鎖酒店, 北至北海道, 南至九州, 甚至沖繩都有他的分店。 今次在京都住的是烏丸五条店, 地理位置不算非常好, 因為它與京都駅有一站之隔, 酒店是位於烏丸五条上, 但因為這樣價格相對優惠。 而由酒店往京都駅也不一定要坐地鐵, 幾天下來我們多用走路的, 大概1015分鐘左右的步程。 另外我們選擇這裡的原因還有它離「夢館」很近, 來京都當然要穿和服啦 還有這是Super Hotel的費用也是包含了早餐 和大阪的Via Inn一樣 截圖自Google Map 但是Super Hotel 烏丸五条店走前一兩分鐘就有一個巴士站, 其實也不用每次都回到京都駅坐車, 在烏丸五条巴士站坐車到景點一樣可以。 截圖自Google Map 我們由大阪坐JR到京都駅, 然後坐地鐵到「五条駅」, 然後在8號出口出去 8號出口都是樓梯, 攜帶大型行李又沒有壯丁搬行李的朋友們慎出 但是地鐵五条駅的8號出口是最近的, 因為出來後左手邊就是酒店了 酒店本身有一個停車場, 一天1000円, 但位置不多。 我們這天來到時就是酒店停車場已經沒了, 但是附近還有很多很多停車場, 找一個價錢合理的就可以停了。 進去吧, 酒店的大堂在2樓 一到2樓就是櫃檯 Check in好後會有一張收據, 不要亂丟, 或者先用手機拍個照。 因為Super Hotel是沒有房卡的, 都是用密碼鎖, 收據上會列出你的房號和密碼, 你住在這裡的期間都是用同一個密碼開門。 在2樓除了櫃檯外, 旁邊是早餐用餐的地方 還有自動販賣機、製冰機 我覺得製冰機非常有用, 因為旅行一般我都會自備熱水壺煲水喝, 有冰塊就不用慢慢的等水變凍, 直接加入冰塊就可以了 懶人方法 還有咖啡機、電腦等供住客自由使用 走 去房間 310樓都是客房, 沒什麼特別的 我們住在6樓 來到房門口, 其實我也是第一次住這種完全沒有房卡的酒店 按START後再按上收據上的密碼, 門就打開了 我們訂的是「ソファベットダブルベッド」房型, 就是一張雙人床和一張梳化床 那張梳化床是一個很好擺放雜物的地方 空間其實真的不大, 我移了一下位置才能順利的開到兩個喼行李箱 床倒是挺舒服的 浴室, 也是有點狹窄 浴室是用這種花灑和洗手台用同一個出水口的設計, 就是兩者不能同時用, 同一時間只能用其中一個。 我很不喜歡這種的 因為尤其是一早起床矇矇的時候, 多數都會按錯, 把開洗手台的水變成開了花灑, 然後....整個人就濕了.......醒晒 在這酒店有一個東西我覺得蠻貼心的, 就是這個拖鞋用的舒適墊 因為這種拖鞋不是即棄的那種, 就是不知道會如果清潔一下然後又被重覆使用。 這個雖然說是舒適墊, 但我更覺得是清潔墊, 貼在拖鞋上至少感覺會好點, 感覺乾淨點點 跟日本其他酒店一樣, check in的時候可以拿一些女性用品或是衛浴用品。 這酒店規定住一天可以拿5種。 我們拿了一些溫泉粉, 不泡澡, 泡泡腳也不錯 我們在Super Hotel住了3晚, 如果隔天不用打掃房間的話, 就把這個牌貼在門外。 為了支持環保, 所以不用打掃的房間都會贈送一支水 我們選擇了不用打掃房間, 因為我們都習慣自備毛布了所以不打掃都沒什麼影響。 去完景點回到酒店就看到門口掛著贈送的水和一些替換的廁紙等 我們住了3晚, 也吃了3天Super Hotel的早餐。早餐時間是07000900, 在2樓。 早餐是免費的, 就是房價已經包含了早餐。 早餐款式不及大阪的Via Inn多, 但也算是會換款式, 不會每天完全一樣的。 有麵包 熱食 沙律醬也有不同口味的 因為房間是用密碼鎖沒有房卡, 所以也不用check out。 在1000前退房直接走就可以了, 並不用再到2樓櫃檯處。這個感覺挺奇妙的 我覺得Super Hotel 烏丸五条店整體不過不失, 如果需要經常往返京都駅的人地點確實不太方便。 但如果能適當地利用五条巴士站往返景點的, 也是不錯的選擇。 Super Hotel 烏丸五条店 Super Hotel 烏丸五条店 京都府京都市下京区烏丸通り五条下る大坂町396番3 0753439000 httpwww.superhotel.co.jps_hotelskarasumakarasuma.html 地鐵「五条駅」8號出口旁 2017年12月份「ソファベットダブルベッド」房型 2人3泊含早餐 39,000円 稅入 價格僅供參考

為食推介 | 一口氣挖掘澳門5間寶藏小店!疫情過後我哋逐間細味品嚐~
澳城餐飲
食在澳門iFood・2021-08-21

尋找美食的過程 總是充滿未知之數 話唔定就會在街角偶遇 每一間寶藏店鋪 都充滿快樂與驚喜 美食、美味、美好 盡在其中 ▽ 萬利洪記粉麵美食 地址:新市西街萬利大廈20號 美好事物價值的證明,時間是最好的度量衡。經歷七十幾年日夜仍熙熙攘攘,則是一家食店寶貴的象征,「萬利洪記粉麵美食」,深藏著街知巷聞的澳門古早味。 從擺檔開始,再到有瓦遮頭,洪記在澳門巷內歷經七十餘年歲月。地道咖喱粉麵、招牌手打發財魚球、古早鮮蝦切肉雲吞hellip;hellip;每一份都訴說著懷舊的味道。 綠色色調映襯木色裝潢,每一處細節都吐露著澳門的古早氣息今日就來一嘗究竟! 為食妹最愛的雞翼麵隆重登場,呢份雞翼,有個響噹噹的大名mdash;mdash;馳名金牌香露雞翼!全隻雞翼誠意奉上,讓你盡情享受吮指的滋味 既然係金牌選手,肯定好打得喇!秘製滷水汁滷製之下,醬色滲透成隻雞翼外皮,連內裡肉都吸滿鮮味! 加一羹醃青椒,一定係神筆馬良的點睛之筆!為咗消除濟感,每張檯都會有備一樽ldquo;醃青椒rdquo;!酸爽嘅青椒冇任何青味,而且更加提鮮更加惹味! 一碗粉麵有幾多種食法?完全靠你的創意搭配!單料、雙拼、三拼、四拼hellip;hellip;無論你想拼幾多,餐牌多種選擇都可以滿足到你! 魷魚拼鳳爪麵,韌勁與軟爛的雙重口感享受,讓我於咀嚼時也充滿驚喜!自由切換模式mdash;mdash;魷魚的彈口爽滑、鳳爪的膠質滑嫩,統統盡收口中! 辣薯仔粿條的靈魂之處係辣薯仔的加持!又酸又辣的湯汁浸潤著糯香薯仔,入味非凡!輕輕抿開粉質滿滿的辣薯仔,香氣隨著粿條蔓延口腔之中 永聯小食 地址:龍頭左巷裡海星中學旁 電話:66541088 海星中學腳下的小店mdash;mdash;永聯士多,係放學必選!各類手作壽司、自選炸物小食一應俱全,承包放學時候的快樂 蟹柳壽司、雞肉蟹柳壽司、八爪魚壽司 、肉鬆壽司四種口味滿足多變的食慾! 每一款收工壽司的餡料滿滿、誠意十足!而且價錢只需$6 裝著炸物的牛皮紙袋微微滲出油花,誘人香氣撲鼻而來,難道這樣的快樂,不值得小心珍藏嗎? 外脆內嫩的腸仔,無論個頭大小,都一樣咁啱口味! 金黃香脆的雞全翼,承包一整個下午的快樂!由雞髀到雞翼尖,每一啖都迸發鹹香酥脆衝擊力! % 地址:澳門大三巴戀愛巷 營業時間:9am9pm 一杯好的咖啡似清晨的加油站,注入靈魂開啟新的一天;似午後的庇護所,讓你喘息清理冗餘情緒。 追求ldquo;人、事、物rdquo;都極致美感的咖啡品牌【%Arabica】終於降臨澳門,帶來高品質精品咖啡,啟程高級的味覺之旅。 iBAGEL貝果屋 地址:澳門冼星海大馬路277號恆基花園N鋪 營業時間:10301830(週日休息) 人均:18mopmdash;50mop 溫馨提示: 因每日出品有限 需提前在Instagram或wechat進行預訂 iBAGELmdash;澳門首家貝果專賣店,不同於機器化的批量生產,店內貝果每天都係純手工現做,最好就需要提前預訂,真正的美味都值得耐心等待。 iBAGEL口味琳瑯滿目,芝士、紫薯忌廉、朱古力、伯爵茶等等,讓人難以忘懷的味道和口感,你的味蕾會由誰來喚醒? 「餡料」係貝果的靈魂所在,而貝果屋創造的內餡極其豐富精彩,有夾心的貝果將內餡元素綜合得恰到好處。 PATATA 地址:幸運圍福華里5A地下 營業時間:11001900 電話:62743999 下午茶時間,你會食奶油蛋糕又或者芝士蛋糕。而Patata主打鹹口嘅薯仔蛋糕,係西班牙嘅傳統小食之一,你又試過未? PATATA的原味薯仔蛋糕遵循西班牙傳統做法,用薯仔同雞蛋為主要原料製成,外皮焦脆但內裡口感軟軟糯糯,不愧為西班牙國民小食。 ENDING 尋找澳門美食旅程仍在繼續 下一次啟程 讓我們再一起出發 挖掘更多寶藏店鋪喇! 圖文得得、肥肥 美工陳真香 攝影他說他叫修杰楷 為食妹溫馨提示 疫情期間,請注意減少出行及聚會! 佩戴好口罩

【澳門】※行山路線※ 黑沙水庫家樂徑 + 路環步行徑 ~ 行山健行 滑草划艇 悠然自得
生活在我城
80後愛旅行✈️・2020-06-13

「黑沙水庫家樂徑」位於黑沙水庫郊野公園內,出入口設於郊野公園內的燒烤區旁。 「黑沙水庫家樂徑」於1994年對外開放,全長2650米,路面平緩易走,適合一家老少郊遊。 我們開車直接到「黑沙水庫郊野公園」門口,旁邊和斜對面就有停車位。 而坐巴士的話,就可以直接坐到郊野公園門口的巴士站(下圖紅色站牌)。 「黑沙水庫家樂徑」出入口設於郊野公園內的燒烤區旁,一進公園往左邊走就對! 由100米開始,出發~!! 黑沙水庫滑草場,看上去很刺激很想玩,可惜只有小孩才能玩 逢週六、週日及公眾假期0830 1230及1330 1700 只供3歲或以上,且身高為145cm含以下兒童使用 免費 上來後我就決定直走,就看到「累沙水庫家樂徑」的標柱,證明沒走錯。 走上去沒幾步往回看就已經可以看到黑沙水庫的全景了! 黑沙水庫中最具特色的就是這個「水上樂園」,裡面有遙控模型船區、釣魚區、划船和腳踏船等,是一家大小的好去處! 這次就先不玩水上活動,專心行山吧 「黑沙水庫家樂徑」和我之前走過的「路環步行徑」有部份也是相連的(如上圖) (畢竟澳門太小了,來來去去都是這幾個山頭) 原來我剛剛一直走,就走到來「路環步行徑」 C17就是「黑沙水庫家樂徑」和「路環步行徑」相連的地方 雖然同樣是走「路環步行徑」,但是這段路我上次都沒有走過 這個「楹花藍」亭很熱鬧的,我經過了兩次都有很多人在裡面聊天、野餐,應該是風景不錯的! 沒有走進「楹花藍」亭,我走到旁邊的一塊大石上,一樣可以看得清楚腳下的風景! 路面平緩易走,很適合一家老少郊遊。 看到遠處的鷺環海天酒店(前威斯汀酒店) 看到山上的「路環媽祖像」,我們就以這個為目標往山上爬了 往「路環山頂公園」出發 超長的樓梯 上山後腳下又是一片的美景 上完長長的樓梯就看到了「路環山頂公園」 公園對面就是「媽祖文化村」,我也只來過2次,也沒有再往高處再走。 原來從「媽祖文化村」再往高處再走,就會來到路環媽祖像了。 路環媽祖像是迄今全球最高的漢白玉媽祖像,塑像由120塊漢白玉石雕刻而成,身高 19.99 米。 繞過路環媽祖像從旁邊的步行徑繼續走 走到高點「路環媽祖像」後開始向下山方向走 這個標柱很特別,它集合了「黑沙水庫家樂徑」和「路環步行徑」,是一個兩條步行徑都會經過的路。 這個山體很特別,看上去有點像梯田,但其實非常的臭。 這是挖了很多的洞,準備放入肥料種樹,臭味應該是從肥料而來的。 回到「黑沙水庫家樂徑」 「黑沙水庫」 湖水的顏色很翠綠 山中有一條陡峭的樓梯,我們剛剛也是從其中一條走下來的。應該不是正規的路徑,是捷徑小路。 樓梯真的蠻陡的,要走的話真的要小心! 「黑沙水庫郊野公園吊橋」 走過吊橋可以看到水庫美麗的風景! 12歲以下兒童要由成人陪同,安全第一。 對面是水上活動中心,有個露天茶座,非常寫意。 水上樂園開放時間為逢週六、週日及公眾假期之上午1000至下午1700 雙人腳踏艇Mop20 30分鐘 / 四人腳踏艇Mop40 30分鐘 孕婦及未滿6歲者禁止進人浮台區域,6至12歲者須由家長或成人陪同下方可租用腳踏艇 走過吊橋後就會回到滑草場,再按原路回去。 這次橫跨了部份的「黑沙水庫家樂徑」和「路環步行徑」,大概走了2小時。 黑沙水庫家樂徑 黑沙水庫家樂徑:黑沙水庫郊野公園入口/路環黑沙馬路 httpsnature.iam.gov.moctrailsdetail243a57fa8439472e888e743a64cda20a httpsnature.iam.gov.moccountryparkdetail9bdd239fa2414c95b9bc6a0f3e4de1a0 檢視較大的地圖

【日本。九州自駕】※景點※ 分 九州自然動物園 African Safari Jungle Bus (叢林巴士)
走遍世界
80後愛旅行✈️・2023-07-28

九州自然動物園 African Safari 是位於九州大分縣的一個動物園 園內致力保存野生動物自然生存的環境, 由山、草原、森林等六種環境組成, 把動物原來生活的環境得以再現。 動物園內有大型食肉動物獅子、老虎、獵豹 和食草動物大象、長頸鹿、犀牛 還有小型動物矮馬、袋鼠、刺猬等... 九州自然動物園 African Safari 最吸引人的是Jungle Bus叢林巴士 是可以讓遊客直接餵食獅子、長頸鹿等動物, 並且可以近距離的觀察。 在餵食的同時還可以感受到動物的野性, 大人和小朋友都樂在其中 Jungle Bus都會裝成動物那樣, 有犀牛, 有老虎, 不知道是不是裝成動物進園區後動物以為是同類所以不襲擊 ​ 我們是在2號站上車, 車票上都有寫清楚的... ​ ​ 準時上車囉 ​ 上車的時候每兩個人會發一盤食物, 有肉類有素菜 是用來餵動物的 ​ 知道我們不是日本人還發了一張餵食說明給我們, 幾年前我和老公來的時候還沒有這一張卡, 只能猜工作人員在車上說明什麼動物要夾什麼食物 基本上都聽不懂的, 還好當時有同車的日本人幫忙。 這次有了這張卡就方便多了 ​ 要開車了 地圖6 14 每進入一個區域全部都是雙門設計, 不怕野獸會在開門其間跑走 不過在這裡定時有東西吃, 環境也不錯, 應該都不想走吧 ​ 第一站, 是山羊 ​ 就是這樣用夾子餵指定的食物給牠們, 記得手指不要伸出去啊 ​ 大家都這樣餵飼, 真的很好玩的 小朋友也不會怕, 真是親子好活動 第二站, 黑熊 ​ ​ 第三站, 獅子來了餵獅子應該是重頭戲吧 雖然隔著鐵閘但是能這樣餵獅子的機會也不是常有吧 獅子真的是野獸, 記得記得小心手指, 不要伸太出去 ​ ​ 小抓子都爬到車上的鐵欄上了 ​ 知道有車來就代表有吃的, 牠們都跑出來排排等著吃 ​ 這個園區的環境真的不錯, 動物住在這應該算不錯吧 ​ 第四站, 鹿和斑馬 ​ ​ ​ ​ 第五站, 梅花鹿 ​ ​ 第六站, 牛 ​ ​ ​ 第七站, 犀牛 ​ 第八站, 大象 ​ 餵大象時要小心, 牠的鼻子會噴水進來的啊 ​ 第九站, 長頸鹿 ​ 第九站, 老虎 牠們好懶惰啊 ​ ​ 老虎的肉不是我們餵的, 是由工作車上的工作人員負責的 ​ 第十站, 鬣狗 ​ ​ 第十一站, 獵豹 ​ 第十二站, 駱駝 ​ ​ ​ 小笨蛋的還咬著鐵欄, 可愛呢 ​ ​ 整個Jungle Bus繞一圈大約1小時, 這個小時內真的可以近距離接觸各種動物呢

【日本。山陰山陽自駕】├住宿┤ 鳥取 羽合溫泉 望湖樓
走遍世界
80後愛旅行✈️・2023-02-27

望湖樓位於日本鳥取縣東鄉池池畔的一間溫泉旅館,至今已有約90年的歷史。 旅館內有日本唯一的湖上露天溫泉! 這天我們順利的在1600左右到達 ​ 望湖樓門口有專用的停車場,自駕來非常方便。 ​ 望湖樓 ​ 這裡的松葉蟹很有名,就連路上都有蟹的標誌 ​ 望湖樓規模很大,看大堂就知道了~ ​ 大堂有很多周邊的觀光資料 ​ ​ 日本有些溫泉旅館會免費提供有花紋圖案的花浴衣,但望湖樓的花浴衣是要收費的。 普通花色的浴衣在房間內已經有提供。 ​ ​ 望湖樓一共有幾個溫泉,之後再介紹。 ​ ​ 如果對洗髮水有特別要求的,也可以在這個Shampoo Bar 用 yen;300 購買一定份量的來使用。 ​ ​ 旅館內分了「湖上閣」、「對水閣」、「浮見亭」三個部份 我們住在「湖上閣」 ​ ​ 我們訂的是「【湖上閣・和室】和室10〜12畳」 ​ 一進來最震撼我的就是客廳的超大玻璃!! 這個房間的 Gimmick 是「朝陽でお目覚めくつろぎ」大概就是說「在早晨的陽光下放鬆」, 即是說在這個玻璃窗是可以看到日出日落的美景!!好期待啊~!! ​ 我們先去參觀其他地方,這是浴室 ​ ​ 洗手間 ​ 跟大多數的溫泉旅館不同,普遍的溫泉旅館是使用很大一支的洗髮水、沐浴露等,如果覺得合適的話可以即場購買。 但這裡是採用一小包一小包的洗髮水、沐浴露,對於我們來說,份量略少。 ​ ​ 再回到客廳了,這一個大玻璃窗真的很棒,可以看到整個東鄉池的風景, 東鄉池雖然只是一個池,但周長有12公里,亦是山陰地方的八大美景之一。 ​ ​ 玻璃窗前很貼心的放了一張長桌子,在這裡邊看著外面的美景邊享用茶點,真的一流! ​ ​ 被房間的私人風景吸引,捨不得出去了!不過來到溫泉旅館,怎麼可能不泡溫泉。 還記得我一開始說過,住溫泉旅館不要等到天黑黑才入住嗎?這次就真的可以趕在黃昏時間來泡露天溫泉,邊泡邊看日落了!! 現在就要出去泡溫泉了~!! ​ 可以換上防水拖鞋才走出露天的地方 ​ 望湖樓有日本唯一的湖上露天溫泉 這一整棟就是溫泉了 內有「朝陽 ● 夕陽」2個溫泉,而天台更是一個可以俯瞰整個東鄉池的露天足湯 ​ 露天溫泉分為「朝陽」 和 「夕陽」兩個室,分別為男湯和女湯,而每天都會把兩個室交換。 即是今天「夕陽」為女湯,明天就會是男湯。 溫泉內沒有拍照,找來官網上照片。 溫泉內真的放了椅子欣賞日落,由於一離開溫泉就太冷了,所以我沒有坐在外面。 就好好的泡在泉水內欣賞日落 ​ ​ ​ ​ ​ ​

Spring Boot 05 - 為 http json api 加入登入要求
科技新知
MacauYeah・2024-07-02

本節,我們將為之前的http服務,加入認證機制,只有在資料庫現存的用戶可以登入及訪問我們的json api。 下戴模版 慣例,我們用Spring Initializr Maven 下載模版,Dependency主要選擇 Spring Web Spring Boot DevTools Spring Security Controller 跟上節一樣,我們起一個Controller,為簡化測試,我們只做http GET api。 由於本blog對於Source Code的顯示不太友好,有需要看source code的,請到Github查看 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeController.java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMappingquot;apiquot; public class HomeController @GetMappingquot;someRecorduuidquot; public Map readSomeRecord@PathVariable String uuid return Map.ofquot;retquot;, quot;your uuidquot; uuid; 準備我們的test case,但這次我們預期它應該要出現登入失敗的結果。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeControllerTest.java @SpringBootTest @AutoConfigureMockMvc public class HomeControllerTest @Autowired private MockMvc mockMvc; @Test void testNoLogin throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is4xxClientError .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.doesNotExist .andDoMockMvcResultHandlers.print; 在我們執行上述的測試,test case 成功過了。我們的基本設定跟上一節其實沒有多大改動,為何現在http api會回傳狀態 401? 那是因為我們在依賴中加了,Spring Security,它配合了Spring Web,就會自動為所有api加入權限檢測。我們的測試中,沒有任何用戶登入,當然會出現 http 401。為了讓我們可以好好管理誰可以使用api,我們就來設定一定Security。 我們加一個WebSecurityConfig.java,暫時指定所有的訪問路徑都必需有USER權限,並且用 http basic的方式登入。 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataconfigWebSecurityConfig.java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class WebSecurityConfig @Bean SecurityFilterChain securityFilterChainHttpSecurity http throws Exception http.authorizeHttpRequestsauthorizeHttpRequests gt; authorizeHttpRequests.requestMatchersquot;quot;.hasRolequot;USERquot;; 所有的訪問路徑都必需有USER權限 ; http.httpBasicCustomizer.withDefaults; 使用http basic作為登入認證的方式 return http.build; 上述例子,只是擋了沒有權限的人,我們還需要讓有登入身份的用戶可以成得取限User權限。 我們繼續修改,WebSecurityConfig,加入只在記憶體有效的InMemoryUser import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class WebSecurityConfig .. @Bean public PasswordEncoder passwordEncoder return new BCryptPasswordEncoder; 我們的密碼不應該明文儲,比較保險,我們使用BCrypt演算法,為密碼做單向加密。 @Bean public UserDetailsService userDetailsService UserDetails user = User.withUsernamequot;adminquot; .passwordpasswordEncoder.encodequot;passquot; .rolesquot;USERquot;.build; 我們在記憶中體,加入一個測試用的User,它的名字為admin,密碼為pass,權限為User return new InMemoryUserDetailsManageruser; 然後加入新的測試,直接模擬Role。結果是通過的。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapidatacontrollerHomeControllerTest.java @Test void testLoginWithRoles throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON.with SecurityMockMvcRequestPostProcessors.userquot;someonequot; .rolesquot;USERquot;, quot;ADMINquot;; 沒有使用密碼,只使用Role this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is2xxSuccessful .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; 再來一個測試,改用密碼登入,分別輸入錯的和正確的密碼。 @Test void testLoginWithWrongPasswordAndNoRole throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .headerquot;Authorizationquot;, quot;Basic randompassquot; 輸入錯的密碼,應該回傳http 401 Unauthorized .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is4xxClientError .andDoMockMvcResultHandlers.print; @Test void testLoginWithPassword throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .headerquot;Authorizationquot;, quot;Basic YWRtaW46cGFzcw==quot; http basic 就是把 adminpass 轉成base64 .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.status.is2xxSuccessful .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; 最後,當然是正確的密碼才能通過。若果大家還是半信半疑,我們可以跑起真的正服務(IDE RUN或mvn springbootrun),然後用curl去試。 curl httplocalhost8080apisomeRecord1234 failed with 401 curl u quot;adminpassquot; httplocalhost8080apisomeRecord1234 successed 使用SQL Database讀取用戶登入資訊 一般而言,我們不可能把所有用戶登資訊打在InMemoryUser中,通常背後有一個資料庫儲存所有的用戶資訊,我們在登入時,讀取它來做對比檢證。 為此,我們在maven中,加入 Spring Data JPA h2 database (或任何你的資料庫,如mysql 、 sql server) 最後一步,我們把InMemoryUser去掉,改為從資料庫讀取。因為原始碼太多,就不全部貼上。最主要的是WebSecurityConfig.java要關掉之前的UserDetailsService,改為提供一個UserServiceImpl類,它會實現UserDetailsService的功能。 @Configuration @EnableWebSecurity public class WebSecurityConfig 把原來的Bean先變成註解,其他不變 @Bean public UserDetailsService userDetailsService UserDetails user = User.withUsernamequot;adminquot; .passwordpasswordEncoder.encodequot;passquot; .rolesquot;USERquot;.build; return new InMemoryUserDetailsManageruser; springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataconfigUserServiceImpl.java other import import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; @Service public class UserServiceImpl implements UserDetailsService @Autowired PasswordEncoder passwordEncoder; @Autowired UserRepo userRepo; @Override public UserDetails loadUserByUsernameString username throws UsernameNotFoundException 因為我們資料庫沒有資料,為了方便測試密碼的加密,我們在java code上直接插入一筆資料。 UserEntity defaultUser = new UserEntity; defaultUser.setUsernamequot;adminquot;; defaultUser.setPasswordpasswordEncoder.encodequot;passquot;; defaultUser.setRolequot;USERquot;; defaultUser.setUuidUUID.randomUUID.toString; userRepo.savedefaultUser; 上述為測試用插入資料,不應該出現在正式使用環境中。 UserEntity user = userRepo.findOneByUsernameusername .orElseThrow gt; new UsernameNotFoundExceptionusername quot; not foundquot;; 找找資料庫有沒有正在登入的該名使用者username List authorities = List.ofnew SimpleGrantedAuthorityquot;ROLE_quot; user.getRole; LOG.debugquot;got user uuid, username, role from databasequot;, user.getUuid, username, user.getRole; 如果前面的 findOneByUsername 有結果回傳,我們就給它一個ROLE_XXX的權限。 return new Userusername, user.getPassword, authorities; 這裏從沒有檢查過密碼是否有匹配,全部交給Spring Security去做 springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidataentityUserEntity.java springboottutorialspringbootwebapidatasrcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapidatarepoUserRepo.java 上述段落中,筆者省略了UserEntity和UserRepo,它們只是一般的springdatajpa概念,有需要可以經文末的連結查看完全原始碼。最需要注意的,是UserEntity的password欄位,在資料庫中是以加密的方式儲存。我們在配匹登入者與資料庫記錄時,也沒有自行檢驗密碼的需要。我們只是在加密過的密碼回傳給Spring Security,Spring框架會自行把登入者輸入的密碼與加密了的密碼作比較。