簡體   English   中英

laravel-登錄重定向會丟失網址哈希

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM