gpt4 book ai didi

Laravel 5 如何使用从 url 获取参数和 Controller 的登录方法

转载 作者:行者123 更新时间:2023-12-01 16:59:09 25 4
gpt4 key购买 nike

我正在尝试实现一个登录系统,只有当网址中有 get 参数时,用户才会被重定向回来,否则它将被重定向到个人资料页面。

所以,如果 uri 是这样的(没有获取参数)

/login

如果成功,用户将被重定向到个人资料页面。

但是如果 uri 具有 get 参数,例如

/login?r=articles

用户将被重定向到文章页面,而不是默认路由到个人资料页面。

问题是,在 Controller 中,如果可能的话,如何做到这一点,或者如何检查 get 参数?

routes.php

// Signin
Route::post('/account/signin', [
'uses' => 'UserController@postSignIn',
'as' => 'user.signin',
]);

UserController.php

// Signin
public function postSignIn(Request $request)
{
$this->validate($request, [
'login-email' => 'required|email',
'login-password' => 'required'
]);

if ( Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]) )
{

// Tried this, isn't working... (maybe something's missing ??)
$redirect = $request->input('r');
if ($redirect) {
return redirect()->route($redirect);
}
// -->

return redirect()->route('user.account');
}
return redirect()->back();
}

signin.blade.php

<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">

<div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
<label class="sr-only" for="email">Email</label>
<input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
</div>

<div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
<label class="sr-only" for="password">Password</label>
<input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
</div>

<div class="form-group">
<input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
Remember
</div>

<button type="submit" class="btn">Sign in!</button>

<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>

谢谢。

已更新

谢谢大家的回复,事实上,我仍在了解 Laravel,这可能就是为什么我无法正确实现你们分享的解决方案的原因。

也就是说,我通过创建一个保存查询值的条件隐藏字段来使其工作,这样一旦用户提交表单,它将与其余的 $response 参数一起传递。

signin.blade.php

<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">

<div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
<label class="sr-only" for="email">Email</label>
<input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
</div>

<div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
<label class="sr-only" for="password">Password</label>
<input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
</div>

<div class="form-group">
<input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
Remember
</div>

<button type="submit" class="btn">Sign in!</button>

<input type="hidden" name="_token" value="{{ Session::token() }}">
<!-- Verify condition -->
@if(isset($_GET['referer']))
<input type="hidden" name="referer" value="{{ $_GET['referer'] }}">
@endif
</form>

UserController.php

// Signin
public function postSignIn(Request $request)
{
$this->validate($request, [
'login-email' => 'required|email',
'login-password' => 'required'
]);

if ( Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]) )
{

// Check for the new argument 'referer'
if (isset($request->referer)) {
return redirect()->route($request->referer);
}
// -->

return redirect()->route('user.account');
}
return redirect()->back();
}

就像这样,它可以工作。

不知道这在 Laravel 5 中是否是一种可行且安全的方法,但它确实有效。

最佳答案

当您有 login?r=articles 这样的 URI 时,您可以像这样检索 articles:

request()->r

您还可以使用 request()->has('r') 来确定它是否存在于 URI 中。

request()->filled('r') 来查明它是否存在于 URI 中并且其值不为空。

关于Laravel 5 如何使用从 url 获取参数和 Controller 的登录方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com