さて、私はここで夢中になります。これはとてもシンプルなはずだと思われるもので、たぶんそれは私を顔で見つめているだけで、私はそれを見ていません。AJAXを使用してフォームを処理し、プレーンテキストのユーザー名とパスワードを使用してモデルに対してのみ認証するKohana3.2でログインページを作成するための具体的な手順があります。これは、私を困らせるように明確に設計された演習です。いいえ、ここではセキュリティは問題ではありません。悪用されるデータベースやコンテンツはありません。
私は現在、authconfigファイルのデフォルトの「file」ドライバーを使用してAuthを使用するだけでログインフォームを機能させています。
application / config / auth.php
return array(
'driver' => 'file',
'hash_method' => 'sha256',
'hash_key' => 'testkey',
'lifetime' => 30000,
'session_type' => Session::$default,
'session_key' => 'auth_user',
// Username/password combinations for the Auth File driver
'users' => array(
'admin' => 'be4039381cf04bb778de68e6520a77c7d8b5e6d146f932f0759e681a46bfc120',
),
);
しかし、私はこれを変更してAJAXを使用して送信および承認する方法の例を検索して探してきました。is_ajaxやController_Templatesなどの海で泳いでいます。コハナを約28時間使用しています。誰かが私がこれを理解するのを手伝ってくれますか?
application / views / user / login.php
<?= Form::open('user/login',array('class'=>'form-signin')); ?>
<h2 class="form-signin-heading">Sign in</h2>
<?php if (isset($message)) : ?>
<h3 class="message">
<?= $message; ?>
</h3>
<?php endif; ?>
<!-- Username Field -->
<?php $uArray = array('type'=>'text','class'=>'input-block-level','placeholder'=>'Username = admin'); ?>
<?= Form::input('username',NULL,$uArray); ?>
<!-- Password Field -->
<?php $pwArray = array('class'=>'input-block-level', 'placeholder'=>'Password = password'); ?>
<?= Form::password('password',NULL,$pwArray); ?>
<!-- Checkbox -->
<?= Form::checkbox('remember','remember'); ?>
<?= Form::label('remember', 'Remember Me',array('class'=>'checkbox','label'=>'Remember')); ?>
<br />
<!-- Submit Buton -->
<?= Form::submit('login', 'Login',array('class'=>'btn btn-large btn-primary')); ?>
<?= Form::close(); ?>
application / classes / controller / user.php
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_User extends Controller_Template {
public function action_index()
{
$this->template->content = View::factory('user/index');
// Load the user information
$user = Auth::instance()->get_user();
// if a user is not logged in, redirect to login page
if ($user)
{
$this->template->content = View::factory('user/welcome')
->bind('user', $user);
}
}
public function action_login()
{
// if a user is already logged in then redirect them to the index.
if (Auth::instance()->logged_in())
{
// User is logged in, continue on
Request::current()->redirect('user/index');
}
$this->template->content = View::factory('user/login')
->bind('message', $message);
if (HTTP_Request::POST == $this->request->method())
{
// Attempt to login user
$remember = array_key_exists('remember', $this->request->post()) ? (bool) $this->request->post('remember') : FALSE;
$user = Auth::instance()->login($this->request->post('username'), $this->request->post('password'), $remember);
// If successful, redirect user
if ($user)
{
$this->template->content = View::factory('user/welcome')
->bind('user', $user);
}
else
{
$message = 'Login failed';
}
}
}
public function action_logout()
{
// Log user out
Auth::instance()->logout();
// Redirect to login page
Request::current()->redirect('user/login');
}
}
application / classes / model / user.php
<?php defined('SYSPATH') OR die('No Direct Script Access');
私はコハナに不慣れなので、モデルに何を入れるべきかさえわかりません。現在、Authは独自のファイルを使用してユーザー配列を保存しています。しかし、私の指示は、モデルにユーザー名とパスワードを保存させることです。
助けてくれてありがとう!