在WEB项目中,有很多时候需要做身份验证,当遇到这种情况的时候,一般都是通过制作一个HTML的FORM表单来提示用户输入他们的有效身份信息,从而进行验证。但还有另外一种更简洁的方法可以实现,就是通过http内置的身份验证功能,从而在浏览器中显示一个状态对话框,如果你也是懒人,不妨一试。如图:
这种方法的实现比较简单,你在程序端或WEB服务器端都可以做这个事情,就拿PHP来说,要想用PHP实现这个东西,只需要以下几行代码便可:
1 2 3 4 5 6 7 8 9 10 |
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != 'admin' || $_SERVER['PHP_AUTH_PW'] != '123456') { Header("WWW-Authenticate: Basic realm=\"Check Login\""); Header("HTTP/1.0 401 Unauthorized"); echo '<html><body><big>Request failed.</big></body></html>'; exit; } echo 'logined.'; |
而在服务端要实现这样的效果,则需要改动WEB服务器配置了,以Apache来说,可以进行如下操作:
首先打开httpd.conf配置文件,找到你要进行权限控制的目录,添加以下的内容
1 2 3 4 5 |
ErrorDocument 401 /401.html AuthUserFile htpass AuthName 'Apache Check' AuthType Basic require valid-user |
添加完成后,这个配置块的大致样子应该是:
1 2 3 4 5 6 7 8 9 10 11 |
<Directory "d:\wwwroot"> Options Indexes FollowSymLinks AllowOverride all Order Allow,Deny Allow from all ErrorDocument 401 /401.html AuthUserFile htpass AuthName 'Apache Check' AuthType Basic require valid-user </Directory> |
然后在d:\wwwroot目录下新建一个401.html,可以在里面加入一些在用户授权失败时显示给用户看的内容。这步做完后,然后我们用apache来生成密码配置文件htpass,命令如下:
1 |
d:\apache2>bin\htpasswd -bc htpass admin 123456 |
回车后,这个密码文件便生成好了,重启web服务器,然后在浏览器里输出d:\wwwroot目录对应的URL,应该就可以看到效果,如果不行,则查查apache错误日志,看是什么问题。
在nginx里实现这个功能则相对简单一些,首先,还是用apache来生成一个密码配置文件:
1 |
/apache/bin/htpasswd -bc /etc/nginx/htpass admin |
回车输入两次密码后,则可完成创建,接下来是配置nginx.conf,找到你要进行权限控制的server域,添加:
1 2 3 4 |
location / { auth_basic "Nginx Check"; auth_basic_user_file /etc/nginx/htpass; } |
重启nginx,看是否有效果。
·本站大部分文章和内容来自互联网,如果您觉得我们侵犯了您的权益,请告诉我们!
·您在本站发表的作品,本站有权在网站内转载或引用!
·本站所提供的设计,摄影及其它作品,如需使用,请与原作者联系,版权归原作者所有。