小编rev*_*ver的帖子

多个canActivate防护装置在第一次失败时全部运行

我有一个有两名canActivate守卫的路线(AuthGuardRoleGuard).first(AuthGuard)检查用户是否已登录,如果没有,则重定向到登录页面.第二个检查用户是否具有允许查看页面的角色定义,如果没有,则重定向到未授权页面.

canActivate: [ AuthGuard, RoleGuard ]
...
export class AuthGuard implements CanActivate {
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
        ...
        this.router.navigate(['/login']);
        resolve(false);
}

export class RoleGuard implements CanActivate {
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
        ...
        this.router.navigate(['/unauthorized']);
        resolve(false);
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我访问路线并且我没有登录时,我点击了AuthGuard,它失败并告诉路由器导航到/login.然而,即使AuthGuard失败RoleGuard了,然后运行然后导航到/unauthorized.

在我看来,如果第一个失败,那么运行下一个后卫是毫无意义的.有没有办法强制执行此行为?

routing typescript angular2-routing angular

29
推荐指数
5
解决办法
2万
查看次数

如何在大型稀疏文件上创建快速有效的文件流写入

我有一个应用程序,可以在多个段中写入大文件.我使用FileStream.Seek来定位每个wirte.看来,当我在稀疏文件中的深位置调用FileStream.Write时,write会在所有前面的字节上触发"回填"操作(写入0),这很慢.

有没有更有效的方法来处理这种情况?

以下代码演示了该问题.初始写入在我的机器上大约需要370 MS.

    public void WriteToStream()
    {
        DateTime dt;
        using (FileStream fs = File.Create("C:\\testfile.file"))
        {   
            fs.SetLength(1024 * 1024 * 100);
            fs.Seek(-1, SeekOrigin.End);
            dt = DateTime.Now;
            fs.WriteByte(255);              
        }

        Console.WriteLine(@"WRITE MS: " + DateTime.Now.Subtract(dt).TotalMilliseconds.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

c# file-io filestream sparse-matrix

9
推荐指数
1
解决办法
2826
查看次数

在XBOX One上测试Windows 10 Universal Application

目前是否可以在我自己的XBOX上测试UWP应用程序(不发布,只在我自己的个人XBOX One控制台上测试)?

基于MS的常见问题解答:http://www.xbox.com/en-US/developers/ID ...

"对于使用通用Windows应用程序的开发人员,您将能够在2015年下半年之后的某个零售Xbox One上测试您的游戏"

但是我找不到任何好的细节来解释在XBOX One上测试/加载应用程序的过程.任何见解将不胜感激.

xbox-one win-universal-app

7
推荐指数
1
解决办法
2210
查看次数