[英]laravel - login redirect loses the url hash
當我想共享網站mysite.com/page1#foo=bar
類的頁面網址,或者想在注銷后訪問該頁面時,由於page1
路由位於auth middleware
,因此我被重定向到login
表單。
我的問題是,成功登錄后,我被重定向到mysite.com/page1
並且丟失了哈希值。
(哈希值也未保留在/login
)
Laravel是否提供任何簡單的方法來保留哈希? 由於哈希沒有發送到服務器,因此我對此表示懷疑,但是也許某個地方錯過了某些東西!
否則,我將需要覆蓋登錄名,也許用JS讀取哈希值,並在登錄后以某種方式將其重新注入重定向中,但是如果有一種簡單的方法,我很想避免這樣做:)
感謝Mruf的指導,我設法做到了這一點。 不確定這是最好的實現,但它似乎正在工作。
基本上,我的形式插入散列值作為Mruf建議的,然后延伸的handleUserWasAuthenticated
在功能AuthController
login.blade.php
<script type="text/javascript" >
$( document ).ready(function() {
$('.urlHash').val(window.location.hash);
});
</script>
<form id="login-form" role="form" method="POST" action="{{ url('/login') }}">
<input type="hidden" class="form-control urlHash" name="urlHash" value="">
....
</form>
AuthController.php
protected function handleUserWasAuthenticated(Request $request, $throttles)
{
if ($throttles) {
$this->clearLoginAttempts($request);
}
if (method_exists($this, 'authenticated')) {
return $this->authenticated($request, Auth::guard($this->getGuard())->user());
}
// old code: return redirect()->intended($this->redirectPath());
$newRequest = redirect()->intended($this->redirectPath());
$newRequest->setTargetUrl($newRequest->getTargetUrl() . $request->urlHash);
return $newRequest;
}
一個簡單的JavaScript就能解決問題:
$("#login-form").submit(function(){
e.preventDefault();
$(this).append("<input type='hidden' name='hash' value='"+window.location.hash+"'");
$(this).submit();
});
現在,您可以訪問請求對象中的哈希
function controllerAction(Request $request){
$hash = $request->get("hash");
// Parse Hash
....
// Redirect to somewhere
....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.