Php 尝试在Laravel 4.2中为GET route而不是POST创建身份验证视图 编辑:
我发现,当URL相同时,POST-one就不会被使用。填充表单会将用户重定向到auth视图,即使其方法设置为POST。这就好像是将form方法设置为GET,或者我定义了一个Php 尝试在Laravel 4.2中为GET route而不是POST创建身份验证视图 编辑:,php,post,laravel,get,laravel-routing,Php,Post,Laravel,Get,Laravel Routing,我发现,当URL相同时,POST-one就不会被使用。填充表单会将用户重定向到auth视图,即使其方法设置为POST。这就好像是将form方法设置为GET,或者我定义了一个路由::any到该URL。我都没有。仔细检查 我仍然认为没有理由发生这种情况 主要问题: 因此,我的应用程序中有一个视图,只有拥有特定密码(而不是用户密码)和特定电子邮件的用户才能访问该视图。为了实现这一点,我在另一个视图中放置了一个表单(每个人都可以访问),并创建了一个发布路线,如下所示: teamv5.blade.php
路由::any
到该URL。我都没有。仔细检查
我仍然认为没有理由发生这种情况
主要问题: 因此,我的应用程序中有一个视图,只有拥有特定密码(而不是用户密码)和特定电子邮件的用户才能访问该视图。为了实现这一点,我在另一个视图中放置了一个表单(每个人都可以访问),并创建了一个发布路线,如下所示: teamv5.blade.php 因此,如果密码是正确的,并且用户的电子邮件是授权访问该视图的电子邮件,那么它就会工作,并且信息会传递给控制器 现在,问题是:我不想让除了那个特定用户之外的任何人看到这个视图,所以我为任何试图在浏览器中简单键入URL的人创建了一个GET路由。该路由应该创建一个身份验证视图,提示用户填写必要的信息。这是控制器: TeamController.php 最后,发生的是:
teamv5.blade.php
中填写第一个表单后,用户将被重定向到auth视图,并被提示再次键入信息(不太好)提前谢谢 我看不出这里有什么问题。如果密码不正确,那么您必须再次将用户重定向到表单,这样,如果他犯了一些错误,他这次可以更正它。你能解释一下你遇到了什么问题吗(也许可以举个例子)?@itachi我会在问题上补充一些我今天发现的额外细节。@itachi问题不是让他纠正错误。即使他正确地填写了所有内容,他仍然会得到auth屏幕,就好像POST路由没有正常工作一样。auth表单也重定向到自身,表明它正在使用GET方法。这看起来像是路由问题,但没有理由。您确定身份验证成功吗?据我猜测,laravel和sentry的哈希机制可能不同,因此,即使输入正确的密码,身份验证也总是失败。@itachi我会检查一下,但可能不是这样,因为我已经尝试过操作post函数。我没有将用户重定向到同一页面,而是返回'fail'仅用于测试目的,甚至不起作用(当然,在尝试验证之前)。这种方法似乎总是因为某种原因而被采用。我不知所措。
<form action="{{ URL::route('team-update-v5-post', array('v5',$team_v5->teamname)) }}" method='post'>
<p>Team password: {{ $team_v5->teamname }}</p>
<input type='password' name='password'>
<input type='hidden' name='email' value="{{ Sentry::getUser()->email }}">
<input type='submit' value='Edit'>
{{ Form::token(); }}
</form>
Route::post('/sentry/team/{v}/{teamname}/edit', array(
'as' => 'team-update-v5-post',
'uses' => 'TeamController@postUpdateV5'
));
Route::get('/sentry/team/{v}/{teamname}/edit', array(
'as' => 'team-update-v5',
'uses' => 'TeamController@getUpdateV5'
));
public function getUpdateV5 ($v,$teamname) {
return View::make('team.auth')
->with('v',$v)
->with('teamname',$teamname);
}
public function postUpdateV5($v,$teamname) {
$validator = Validator::make(Input::all(), array(
'password' => 'required|min:6',
'email' => 'required|email',
));
if($validator->fails()) {
return Redirect::route('team-update-v5',array('v5',$teamname))
->withErrors($validator);
} else {
$team_v5 = DB::table('teams_v5')->where('teamname',$teamname)->first();
$captain_v5 = Sentry::findUserById($team_v5->captain_id);
if(Hash::check(Input::get('password'), $team_v5->password)) {
return View::make('team.updatev5')
->with('team_v5', $team_v5)
->with('captain_v5',$captain_v5)
} else {
return Redirect::route('profile-team',array($v,$teamname))
->with('global','Incorrect password!');
}
}
}