Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MVC环境中的登录/授权最佳实践_Php_Model View Controller_Authorization - Fatal编程技术网

PHP MVC环境中的登录/授权最佳实践

PHP MVC环境中的登录/授权最佳实践,php,model-view-controller,authorization,Php,Model View Controller,Authorization,我正在使用一个自制的面向MVC的框架,需要实现一个登录页面 目前,它的工作方式是每个需要授权的控制器调用其authorize()方法,该方法在伪代码中如下所示: protected function authorize() { if (logged in) { return true; } if (login form submitted) { authorize/validate username/password if

我正在使用一个自制的面向MVC的框架,需要实现一个登录页面

目前,它的工作方式是每个需要授权的控制器调用其
authorize()
方法,该方法在伪代码中如下所示:

protected function authorize() {
    if (logged in) {
        return true;
    }
    if (login form submitted) {
        authorize/validate username/password
        if (!valid) {
            render login form
            return false;
        } else {
            mark user logged in
            return true;
        }
    } else {
        render login form
        return false;
    }
}
我想将此逻辑移动到它自己的LoginController,但这需要“记住”原始请求的目的地,保存所有POST和GET数据,然后执行重定向以访问LoginController


就好的MVC设计和KISS原则而言,用户登录的最佳方式是什么?

我不确定您是否在使用会话数据,但我会保存会话的URL路径。重定向到新的LoginController。满足登录条件后,将浏览器重定向到会话数据中保存的URL路径。会话代码应该是不在控制器中的帮助程序/库代码。确保在满足登录条件后也清除URL路径。

您是否了解了Symfony如何处理此问题?他们的网站上有很多文档。@Jan:没有,我会看一看。谢谢你的提示。从KISS的角度来看,我将使用http基本身份验证,并在web服务器(apache?)中配置它。这样你就不必为此费心了。+1我也在寻找同样的东西。自从我问起,我发现这不仅是最好的方法,也是最简单的实现方法。