[Pyramid 杂记]Static Routes,静态路由是用来干什么的?

理解StaticRoutes在URL生成中的作用
本文探讨了StaticRoutes在路由配置中的特殊用途,它主要用于生成URL而非直接参与URL匹配过程,解释了其在静态文件或页面访问地址生成方面的应用。

官方文档上介绍说Static Routes(即添加路由时指定static参数为True,config.add_route('page', '/page/{action}', static=True)),在匹配Request Url时不会被用来匹配,它只用于生成URL.

这哥就很奇怪,只用于生成URL,而不会被匹配,就是说生成的URL不会被匹配到了嘛(有点拗口 …),那要这货来干嘛?

 

google了一下,找到一篇文章 http://readthedocs.org/docs/akhet/en/latest/library/static.html,大致明白了70%,还有一些问题没想明白,Static Routes可能是用来生成静态文件或页面的访问地址.

 

不敢确定,需要高手指点.

转载于:https://www.cnblogs.com/pythoner/archive/2012/03/17/2404179.html

Pyramid 框架的安全性与认证机制主要有以下实现方式: #### 认证 - **基本认证**:可以通过编写自定义的认证策略来实现基本认证。例如,使用 `pyramid.authentication.BasicAuthAuthenticationPolicy`,它需要一个回调函数来验证用户的凭证。以下是一个简单示例: ```python from pyramid.config import Configurator from pyramid.authentication import BasicAuthAuthenticationPolicy from pyramid.authorization import ACLAuthorizationPolicy from pyramid.response import Response def check_credentials(username, password, request): # 这里简单模拟验证,实际应用中应从数据库等获取用户信息 if username == 'admin' and password == 'password': return ['group:admins'] return None def main(global_config, **settings): config = Configurator(settings=settings) authn_policy = BasicAuthAuthenticationPolicy(check_credentials) authz_policy = ACLAuthorizationPolicy() config.set_authentication_policy(authn_policy) config.set_authorization_policy(authz_policy) def protected_view(request): return Response('This is a protected view.') config.add_route('protected', '/protected') config.add_view(protected_view, route_name='protected', permission='view') return config.make_wsgi_app() ``` - **会话认证**:Pyramid 可以结合会话来实现认证。使用 `pyramid.session` 模块,当用户登录成功后,在会话中存储用户的标识信息,后续请求中通过检查会话来验证用户是否已登录。例如: ```python from pyramid.config import Configurator from pyramid.response import Response from pyramid.view import view_config from pyramid.session import SignedCookieSessionFactory my_session_factory = SignedCookieSessionFactory('itsaseekreet') def main(global_config, **settings): config = Configurator(settings=settings) config.set_session_factory(my_session_factory) @view_config(route_name='login') def login(request): request.session['user'] = 'admin' return Response('Logged in') @view_config(route_name='protected', permission='view') def protected_view(request): if 'user' in request.session: return Response('This is a protected view.') return Response('Not logged in', status=403) config.add_route('login', '/login') config.add_route('protected', '/protected') return config.make_wsgi_app() ``` #### 授权 - **基于角色的授权**:通过 `pyramid.authorization` 模块实现基于角色的授权。可以定义不同的角色和权限,在视图中指定访问所需的权限。例如上述代码中通过 `permission='view'` 来限制对视图的访问。 - **ACL(访问控制列表)**:Pyramid 支持使用 ACL 来进行细粒度的授权控制。可以在资源对象上定义 ACL,指定不同角色对资源的访问权限。例如: ```python from pyramid.security import Allow, Everyone from pyramid.config import Configurator from pyramid.response import Response class MyResource(object): __acl__ = [ (Allow, 'group:admins', 'view'), (Allow, Everyone, 'public_view') ] def __init__(self, request): pass def main(global_config, **settings): config = Configurator(settings=settings) def public_view(request): return Response('This is a public view.') def protected_view(request): return Response('This is a protected view.') config.add_route('public', '/public') config.add_route('protected', '/protected') config.add_view(public_view, route_name='public', permission='public_view') config.add_view(protected_view, route_name='protected', permission='view') return config.make_wsgi_app() ``` #### 安全防护 - **防止 XSS 攻击**:在模板中使用安全的模板引擎,如 Chameleon(Pyramid 从 1.5 版本开始不再内置模板引擎,可选择 Chameleon),它会自动对输出进行转义,防止 XSS 攻击[^3]。 - **防止 CSRF 攻击**:Pyramid 可以通过会话和表单令牌来防止 CSRF 攻击。在表单中添加 CSRF 令牌,在处理表单提交时验证该令牌。例如,使用 `pyramid_csrf` 扩展可以方便地实现 CSRF 防护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值