2017-09-14 80 views
0

我一直在爲一家公司開發「單點登錄」框架,以便他們可以將他們的員工數據庫的四個副本合併到一個Intranet服務器上。我已經完成了功能,但後來遇到了一個需求問題。Laravel:分層身份驗證(「記住我」)

當他們去https://secure.example.com,他們希望一切都在身份驗證後,他們必須有「記住我」的功能,這是沒有問題的。但是,當他們轉到https://supersecure.example.com時,他們希望強制用戶對此單個會話進行「重新認證」。

我想也值得注意的是https://supersecure.example.comhttps://secure.example.com是兩個獨立的laravel項目。

一個可比較的例子是您的手機讓您每次打開商店應用程序時輸入密碼。

TL; DR如何在特定路由上禁止Auth :: viaRemember()?

+0

如果您使用單一登錄,那麼您在哪裏存儲remember_token? – Devon

+1

https://github.com/mpociot/reauthenticate或https://github.com/pascalschwientek/laravel-reauth可能會給你一些想法 –

+1

我不知道任何抽象的解決方案。這完全取決於您如何實現單點登錄功能。如果你正在分享一個會話,那麼只需在「secure.example.com」上有一個標誌標記爲「重新認證」並將其設置爲false,以及何時去「supersecure.example.com」,你可以檢查它是否爲false調用' Auth :: logout()'並重定向到再次登錄(然後將標誌設置爲true,如果你正在登錄supsersecure.example.com'但是這又取決於你如何實現的東西 – apokryfos

回答

0

你需要的是類似於OAUth2服務器的東西。可以登錄www.okta.com,這將爲您提供實現此功能的所有功能。或者,也可以編寫自己的授權服務器,並在Laravel 5中集成自己的自定義API。Google和Facebook也提供這種類型的SDK。

+0

這不能解答問題。 nt低於他們的帖子。 - [來自評論](/ review/low-quality-posts/17336846) –