除了一种模式外,我如何在我的路线中使用通配符?

时间:2018-02-21 21:20:53

标签: ruby-on-rails routing wildcard

我想使用React-Router来处理来自访问者部分的大部分页面,同时创建单页应用程序。但是,我想确保如果用户输入/admin,他就不会重定向"重定向"到root_path

到目前为止,我只设法将所有内容传递给通配符或制作"分区"如下:

root 'home#index'
# example 1
get '/*path' => 'home#index'
get '/articles' => 'home#articles_index'
# example 2
get '/articles/*all' => 'home#articles_index'
# vain try 1
get '/*path' => 'home#index', except: :admin
# vain try 2
get '/*path' => 'home#index', except: '/admin'

我发现了约束,但我意识到确保url被正确传递(即整数而不是字符串),但它没有""黑名单"网址。

有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

为此,您可以将带有约束的通配符段用于此目的。例如:

            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, loginModel.UserName),
                new Claim("StaffId", aartsUser.StaffID.ToString())
            };
            // Role Claims
            foreach(Position p in aartsUser.Positions)
            {
                claims.Add(new Claim(ClaimTypes.Role, p.Role.RoleCd));
                Claim newClaim = claims.Where(c => c.Value == p.Role.RoleCd).FirstOrDefault();
                newClaim.Properties.Add("Description", p.Role.RoleName);
            }

除非网址中有“admin”或“login”或“logout”,否则会将任何请求传递给# config/routes.rb Rails.application.routes.draw do root to: 'home#index' get '*subroute', to: 'home#index', constraints: { subroute: /(?!admin|login|logout).*/ } # all another routes below end