当用户登录我的用户时,我正试图记住我的工作.我一直在努力了解使用数据库和登录控制器设置记住我的最佳方法.
使用我的控制器在登录视图表单上实现记住我的最佳做法是什么?
例子也很有用.
登录控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends MX_Controller {
private $error = array();
public function __construct() {
parent::__construct();
}
public function index() {
$this->load->model('admin/user/user');
$this->document->setTitle('Administration');
if (($this->input->server('REQUEST_METHOD') == 'POST') && $this->validate()) {
redirect('admin/common/dashboard');
}
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$username = $this->input->post('username');
$password = $this->input->post('password');
$remember = $this->input->post('remember');
if (isset($username)) {
$data['username'] = $username;
} else {
$data['username'] = '';
}
if (isset($password)) {
$data['password'] = $password;
} else {
$data['password'] = '';
}
if (isset($remember)) {
$data['remember'] = $remember;
} else {
$data['remember'] = '';
}
$data['header'] = Modules::run('admin/common/header/index');
$data['footer'] = Modules::run('admin/common/footer/index');
return $this->load->view('template/common/login', $data);
}
public function validate() {
$username = $this->input->post('username');
$password = $this->input->post('password');
if (!isset($username) || !isset($password) || !$this->user->login($username, $password)) {
$this->error['warning'] = 'The login information is incorrect!';
}
return !$this->error;
}
}
Run Code Online (Sandbox Code Playgroud)
登录视图
<?php echo form_open('admin'); ?>
<br>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-tag"></i></span>
<input name="username" class="form-control" type="text" placeholder="Your Username">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input name="password" class="form-control" type="password" placeholder="Your Password">
</div>
<div class="form-group">
<label class="checkbox-inline">
<input type="checkbox" name="remember">Remember me</label>
<span class="pull-right"><a href="#">Forget password ? </a></span>
</div>
<button type="submit" class="btn btn-primary">Login Now</button>
<hr>
Not register?
<a href="">click here </a>
<?php echo form_close();?>
Run Code Online (Sandbox Code Playgroud)
Phi*_*lip 12
我建议您不要提供这样的功能,除非您愿意重新构建代码库以实现功能(安全).
Cookie 不是持久登录的安全方法.
您需要将cookie传递给用户名/电子邮件等标识符,后者不应用于隐私原因.出于隐私原因,您还需要提供哈希/令牌而不是密码.
每次成功"记住我"登录后,您需要重新生成一个新令牌并重新生成一个新cookie.
现在是棘手的部分.如果您通过remember me方法登录用户,则需要限制他/她的访问权限,即:不要让他们访问敏感数据,更改密码,更新银行帐户详细信息,进行购买
只有当他们登录为您提供有效的用户名/密码组合时,他们才能再次拥有完全访问权限.
我知道这不是你要找的答案,但它可能会给你一些看法.
| 归档时间: |
|
| 查看次数: |
8592 次 |
| 最近记录: |