带有角度路由的 Laravel 5 中间件

Posted

技术标签:

【中文标题】带有角度路由的 Laravel 5 中间件【英文标题】:Laravel 5 Middleware with angular routes 【发布时间】:2015-08-31 15:52:53 【问题描述】:

我在一个项目中使用 Laravel 5 和 AngularJS,在某种程度上,Laravel 被用作 API,API 路由在 Laravel 中,而客户端路由在 AngularJS (app.js) 中。

是否可以使用 Laravel 中间件来保护 AngularJS 路由,例如,我希望它在 Angular 登录表单页面路由上使用 RedirectIfAuthenticated 中间件,这样人们登录后就无法进入该页面,除了通常据我所知,中间件是在 Laravel 控制器中指定的,它没有角度侧路由的逻辑 - 因此,问题。

所以问题是,我可以使用中间件还是必须让 Angular 发送一个获取请求,询问 laravel 用户是否在每个页面上都登录?那不是更不安全吗?

【问题讨论】:

【参考方案1】:

我最终做的是在登录时创建一个客户端 cookie,以跟踪用户是否登录以用于用户体验目的(隐藏信息,在呈现视图之前重定向),并使用 Laravel用于保护 API 调用的中间件,以确保用户无法与服务器上的 API 进行交互或获取信息,并确保其安全,以防用户更改其 cookie 以谎报其登录状态。

或者,您也可以在每个页面加载之前向服务器发送请求,而不是进行 cookie 检查,但这会增加相当多的开销,并且不会更安全 - 据我所知,因为那个 API调用以检查用户是否登录也只是出于 UX 目的,恶意用户可以删除其 javascript

【讨论】:

以上是关于带有角度路由的 Laravel 5 中间件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:路由之前和之后的中间件

在 Laravel 5.3 的中间件中访问路由 URL 参数

Laravel 5 中间件路由群组子域名路由

laravel 5.2 中特定路由的 web 中间件

Laravel 5.5 Entrust使用中间件授予路由组权限失败

在 Laravel 5.4 中将中间件应用于除 `setup/*` 之外的所有路由