KU案例2之01基础的Security

接下来一个小时,我们将提升一个新的水平,针对symfony一些困难的领域如Security,表单和一些重要的Doctrine,来进行分析和案例实战。

好了,我们可以先喝杯咖啡,伸伸懒腰,准备go!

基础的Security

Symfony的Security组件,实在是很强大。老实说,也非常的复杂。但是它能够链接一些其他的认证系统,比如像Facebook或者LDAP,他还可以从很多地方加载用户信息,比如一个数据库甚至是一个api。

令人失望的是,你想把这一切弄好其实并不容易。但是如果你知道每一块内容都是如何工作的,你会做出令人惊叹的事情来。再告诉你一些秘密武器,自定义你的认证系统会容易的多。

认证(Authentication)和授权(Authorization)

Security是两个部分:认证(Authentication)和授权(Authorization)。认证(Authentication)检查用户的凭证。他的工作不是去限制访问,它只想知道你是谁。

好了,打个比方你是一个高级别的人,想进入一个要塞,你要通过一个安全检查站,每个人都要检查,检查站里的系统(Security)会给你一张卡片(token)来代表你,这就是认证。进入这个地方后,你的卡片可能比标准的访问者能去的地方更多。

授权(Authorization)是Security的第二步,就好像一个一个锁着的门。你会问“这是我的token,我能进入这个门吗?”,Authorization会告诉你“能”或者“不能”。到了这时根本不管你是如何进来的或者说你是谁,只有你的token是管用的。

 

Security配置:security.yml

让我们先来谈谈认证,这可能比授权更加复杂。这个Security配置文件在app/config/security.yml目录下,被config.yml所包含。

Security配置作为一个独立的配置的原因是,他很大也很难看。它和config.yml一起工作会变得很麻烦。

Firewalls 配置(Security.yml)

注意:如果你的Security.yml文件大部分是空的,不用担心!你只需要下载本教程的Security.yml替换它既可。

我们找到firewalls键:他是这个文件最重要的部分。防火墙代表了你的应用程序的认证层或者是安全检查站。删除login和dev防火墙部分,我们只留一个防火墙:

他就像一个机器,让他看到每一个通过安全系统的人才是有意义的。所以我们需要改变pattern键为^/:

现在每个来到我们的应用,所有的请求都使用这个防火墙来认证身份。让我们更改login_path键位/my-login-url网址:

不用担心我修改的这个键或者其他的别的键值,因为他们会干扰你。我会在下面解释他们。

匿名访问(Security.yml)

现在开启anonymous键:

让匿名用户进入网站,类似于让小喽喽也进入要塞。我不打算,让每一个页面都需要用户来登录才能访问。请记住,防火墙是找出你是谁,而不是拒绝访问的。

回到浏览器,不要刷新(要确保你没启用anonymous之前已经启用了浏览器并访问了页面)!首页,注意你的debug工具栏有个红色的小图标。他会提示你”You are not authenticated“;

现在刷新。他变成绿色的了,并告诉您”anon“。点击它显示我们新的”authenticated“。是的,是有点怪,但是匿名用户通过防火墙的认证。

放心,很容易在代码中检查用户是否已经登录。稍后我将向您展示。当然,我们还没有真正的完成登录工作,但是我们在一秒钟获得了一些细节。

发表评论