我有一个应用程序,其中我使用allow()/ deny()进行大多数访问控制,如果用户是否被授权,我希望能够在beforeFilter()中签入。如果我使用控制器或其他一个auth方法,我可以使用isAuthorized(),但这不适用于允许/拒绝 - 我希望它返回true如果用户没有登录但他们正在一个可公开访问的页面。
要退一步并允许其他解决方案:我使用子域名(user.example.com)设置我的应用程序,如果他们没有使用子域名,我想要返回非前端页面,只允许他们通过用户子域访问它们。
有没有更好的方法来做到这一点 - 也许是通过添加控制器授权?我仍然会遇到需要知道他们是否被授权的问题。有没有办法在授权失败时改变Auth组件的功能?我希望它返回404,但仅限于某些条件(具体而言,用户不通过子域访问该网站)。
答案 0 :(得分:4)
allow()和deny()仅指在不登录的情况下访问URL的能力。控制器中的isAuthorized回调更适合已经通过登录表单的用户的权限。
请查看本教程以获得澄清:http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html
答案 1 :(得分:1)
您可以使用Blackhole返回404错误。剩下的问题我不完全明白。您使用Auth但是自定义ACL?