Moo*_*ose 6 javascript aurelia aurelia-navigation aurelia-router aurelia-binding
我想传递用户,在发现AuthorizeStep要么对App class,然后到home module.
这就是我所拥有的:
export class App {
configureRouter(config, router) {
config.addPipelineStep('authorize', AuthorizeStep);
config.map([
{route: ['', ':filter'], name: "", moduleId: 'welcome'}
{route: 'home', name: "home", moduleId: 'home' auth:true}
]);
this.router = router;
}
}
class AuthorizeStep {
run(routingContext, next) {
if (routingContext.nextInstructions.some(i => i.config.auth)) {
this.client.get('auth/login')
.then(response => {
this.user = response.content;
});
}
return next();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
在我的应用程序中,我创建了一个名为AuthContext的类,其中包含currentUser属性.您可以将其注入AuthorizeStep的构造函数中,然后将其注入需要它的任何其他模型中.就像是...
import {AuthContext} from './auth-context';
export class App {
static inject() { return [AuthContext];}
constructor(authcontext){
this.authContext = authcontext;
}
configureRouter(config, router) {
config.addPipelineStep('authorize', AuthorizeStep);
config.map([
{route: ['', ':filter'], name: "", moduleId: 'welcome'}
{route: 'home', name: "home", moduleId: 'home' auth:true}
]);
this.router = router;
}
}
class AuthorizeStep {
static inject() { return [AuthContext];}
constructor(authcontext){
this.authContext = authcontext;
}
run(routingContext, next) {
if (routingContext.nextInstructions.some(i => i.config.auth)) {
this.client.get('auth/login')
.then(response => {
this.authcontext.user = response.content;
});
}
return next();
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在做类似的事情,但我发现我不能依赖在authcontext附加视图模型时在其他视图模型中填充。返回由 the 返回的承诺get,然后next()在 the 的分辨率内返回get似乎解决了这个问题,这个想法是在解决这个问题之前不要进行下一个管道步骤。将其应用于@JamesCarters的答案,我会得到以下(未经测试的)代码:
class AuthorizeStep {
static inject() { return [AuthContext];}
constructor(authcontext){
this.authContext = authcontext;
}
run(routingContext, next) {
if (routingContext.nextInstructions.some(i => i.config.auth)) {
return this.client.get('auth/login')
.then(response => {
this.authcontext.user = response.content;
return next();
});
}
else {
return next();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |