在我的laravel 5.2中的请求文件中,我设置了一个条件来检查用户是否有权获得请求。
代码
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
use App\questions;
use Auth;
class answerAddRequest extends Request
{
public function authorize()
{
if(questions::where('people_id',Auth::id())->count()==0)
return true;
else
{
return false;
return redirect('dashboard');
}
}
public function rules()
{
return [
'answer'=>'required|min:3'
];
}
}
如果我不添加return false
它会执行并插入一个新行,这不应该发生,但是使用当前代码,它会显示Forbidden
这是正确的,但它没有&#39} ; t重定向到我的仪表板视图。如果授权失败,如何将其重定向到其他页面?
答案 0 :(得分:1)
在request
文件中添加名为forbiddenResponse()
的方法:
public function forbiddenResponse()
{
return redirect('dashboard');
}
希望这有帮助!
旁注
此外,您知道DB
和Eloquent
有一个名为exists
的方法,以节省您必须对您的数据库进行计数检查,以便(如果您愿意)可以写您的authorize
方法为:
public function authorize()
{
return questions::where('people_id', Auth::id())->exists();
}
答案 1 :(得分:0)
您在else块中使用了两个return语句
authorize()
永远无法访问第二个return语句。
<强>更新强>
如果要重定向用户,则可以创建自定义中间件并编写与<ng-container *ngFor="let star of arrayStarts">
<span class="glyphicon star" aria-hidden="true"
[class.glyphicon-star-empty]="activeStar>=star? false : true"
[class.glyphicon-star]="activeStar<star ? false : true"
(click)="clickStar(star)"
(mouseleave)="mouseleaveStar(star)"
(mouseover)="mouseoverStar(star)" >
</span>
</ng-container>
中相同的代码。
在要重定向未授权用户的路由中使用此中间件。