laravel - 登录重定向丢失了url哈希

时间:2016-11-17 12:19:10

标签: php laravel redirect login

如果我想从我的网站分享网页网址mysite.com/page1#foo=bar,或想要在我退出时访问此网页,我会被重定向到login表单page1路线在auth middleware

我的问题是,在我成功登录后,我被重定向到mysite.com/page1并且我丢失了哈希值。

(哈希值也不保留在/login

Laravel是否提供了保持哈希的简单方法? 由于哈希没有发送到服务器,我有点怀疑,但也许我错过了某些地方!

否则我需要覆盖登录,也许用JS读取哈希值,并以某种方式在登录后重定向重新注入它,但如果有一个简单的方法,我很想避免这样做:)

2 个答案:

答案 0 :(得分:2)

一个简单的JavaScript可以解决这个问题:

InputStream is; 

is = socket.getInputStream(); 

while(var_Receive){

BufferedReader rd = new BufferedReader(new InputStreamReader(is); 

String line = rd.readLine(); 

System.out.prinln(line); 

} 

现在您可以访问请求对象中的哈希

$("#login-form").submit(function(){
    e.preventDefault();
    $(this).append("<input type='hidden' name='hash' value='"+window.location.hash+"'");

    $(this).submit();
});

答案 1 :(得分:2)

感谢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;
}