Comments (9)
- 根据经验所有的controller一般会有都需要执行的方法,或者需要某个公用的方法挂载在上下文中,所以提供这个方法;也可以选择不用;
- defaultCtrl是一个
generator
吗?如果defaultCtrl
返回的是一个generator
的话,用await
语法肯定不起作用的;
from gracejs.
- 请教一下 怎么实现 filter功能(可能多个: 比如用户登陆校验, 错误统一处理),实现一个新的middleware?
当前 在 每个 controller方法中显示的调用 bindDefault 感觉不好用
from gracejs.
你是拿grace当MVC框架吗?
如果是要做权限校验功能,一般就是显示调用defaultCtrl 的;也可以自定义中间件,但不推荐,因为grace本身是一个多应用的前后端分离框架~
from gracejs.
grace作为前端框架 主要功能 就是路由+proxy; 典型的filter功能 就是在路由层控制的把?
请指导一下, 前后端分离框架中, filter一般在哪部分实现, 谢谢
from gracejs.
没明白你说的“典型的filter”的功能具体是什么功能呢?是指类似laravel的路由机制,某个路由才注入某个中间件?
from gracejs.
比如:spring中通过filter 限制未登录用户不能访问, 实现异常处理 等功能。
进入路由前的过滤功能 / 后台处理后 ,反馈给用户前的 过滤功能
from gracejs.
明白了。
目前的做法确实就是你上面提到的:在控制器中显式调用 this.bindDefault()
,然后在defaultCtrl中调用用户是否已登录的接口(前后端分离的框架下),然后根据业务做处理;
说实话,我也在想有没有更优雅的方案,但是要考虑几个使用场景:
- 如何保证控制器的调用这个filter的灵活性,比如:提供可供控制器配置是否选择执行这个"filter";
- 如何保证控制调用这个filter的时机,比如:如果需求是每次控制器执行完就调用,还是在执行之前调用;
- 如果实现了以上两种场景的配置的话,这个功能跟“如何在逻辑上区分这个'filter'和可自由配置的中间件的区别?”
如果有好的建议的话,可以提出来
from gracejs.
目前我在使用过程中,做路由限制的方式如下 不知道是否有更合适的想法,现在的登陆是做到cookie中的(跳到第三方登陆界面,存放cookie)
// defaultCtrl.js
module.exports = async function(auth){
// vip权限
if(auth=='vip'){
// 验证cookies中的vip账号
let vipid = this.cookies.get('baiduId')
// 发送验证接口到内网
this.proxy(`接口?id=${vipid}`)
// 验证返回数据是否满足需要 不是则重定向到登陆
if( not ) this.redirect('/login')
}
// 别的权限同理 如admin权限等
}
// 具体路由如个人中心 center.js
exports.home = async function(){
await this.bindDefault('user')
// 余下则是业务代码...
}
from gracejs.
@evanzlj 没怎么看明白问题,是说,是要实现登录用户的权限系统吗?这样的情况,可以让后端提供一个获取用户信息的接口;然后在defaultCtrl里直接调用接口,根据用户的情况进行判断。
另外,关于proxy看你上面写的有两个问题:
- proxy没有必要先拿到
baiduId
的cookie,然后通过get参数发出去,你可以直接proxy这个接口,cookie信息会自动带过去; this.proxy
方法记得通过await
语法执行,await this.proxy(...)
from gracejs.
Related Issues (20)
- 路由可以使用别的模式 HOT 1
- 多个post请求且有不同的form参数时,有好的解决方案吗? HOT 2
- Proxy-Post传XML参数时会被放进Form中。 HOT 1
- nunjucks 要添加个过滤器怎么加呢? HOT 1
- 模板引擎改为 nunjucks 出现找不到模板错误 HOT 1
- 建议添加 eslint, .editorconfig HOT 2
- proxy的500友好页怎么跳转
- controller 中如何某个引用的库 没有install 不报错,然后访问的时候404.有办法在编译的时候直接报错吗
- nunjucks 自定义过滤器 HOT 5
- 设置头字段中set-cookie为对应cookie 字段类型报错 HOT 1
- post支持xml吗 HOT 1
- proxy代理数据问题 HOT 1
- 数据库支持扩展 HOT 1
- `defaultCtrl.js` 里做鉴权时抛出`401`错误,无法进入default err handing! HOT 1
- 请问当页面输入URL地址时候如何把controller中的路由文件夹名字省略掉 HOT 2
- koa 新手求教
- 如何提高单点TPS, QPS HOT 5
- npm run dev 后 访问127.0.0.1:3000 报错 Cannot read property 'store' of undefined HOT 5
- session中间件报错,this.session是undefined HOT 2
- 运行start,页面返回Invalid hostname!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gracejs.