Kri*_* MP 9 php acl laravel-5.3
我在文档上找不到它.如何重定向未授权用户?
RolePolicy.php
class RolePolicy
{
use HandlesAuthorization;
public function manageRoles(User $user)
{
return $user->isAdmin();
}
}
Run Code Online (Sandbox Code Playgroud)
RolesController.php
function __construct()
{
$this->authorize('manageRoles', Role::class);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
小智 8
你可以修改文件 app\Exceptions\Handler.php
关于渲染功能:
public function render($request, Exception $e)
{
/**modified part**/
if ($request->wantsJson()) {
return response([
'success' => false,
'message' => $e->getMessage()
], 404);
}
if ($e instanceof AuthorizationException) {
return redirect('path');
//or simply
return view('errors.forbidden');
//but this will return an OK, 200 response.
}
/**end of modified part**/
return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)
如果要放置403,请使用辅助函数response().您可以在https://laravel.com/docs/master/responses中查看回复文档
基本上,您可以使用该解决方案来玩更多选项.但最简单的方法就是创建一个视图文件:
errors/403.blade.php当您遇到未经授权的异常时,该视图将自动加载.同样适用于404未找到,只需创建404.blade.php.
据我所知,这在 Laravel 5.3 中与 Laravel 5 的任何版本中没有什么不同。
有一个名为auth引用的路由中间件App\Http\Middleware\Authenticate(在app/http/Kernel.php中定义)
在本课程中:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
Run Code Online (Sandbox Code Playgroud)
该auth中间件可以应用于需要认证的路由。
在这里阅读有关中间件的更多信息:https ://laravel.com/docs/5.3/middleware
在此处阅读有关身份验证的更多信息:https ://laravel.com/docs/5.3/authentication
| 归档时间: |
|
| 查看次数: |
15000 次 |
| 最近记录: |