今天主要攻克用户登录授权的相关问题,统一身份认证的接入的问题打算过段时间再做,现行完成业务逻辑方面。
- 防CSRF攻击:通过
在blade中打印token。在App/Kernel.php中可见CSRF检查已经加入每次request process中,而非laravel4时需要‘before’=>'csrf'(当然,现在没有filter,而是middleware)。经过查看Illuminate\Foundation\Http\Middleware\VerifyCsrfToken得知除了HEAD、GET、OPTIONS三种request外其他都要进行csrf token检查。<input type="hidden" value="{{ csrf_token() }}" />
- 表单验证:
通过$validator->message()['name']获得对应name字段的错误信息,->has('name')返回是否有错误的Boolean值,->first('name')返回第一条错误信息,->all(‘name’)返回错误信息数组。错误信息模版在resources/lang/.../validation.php中定义,:attribute字段名替换项可在attributes中设置。例如:use Validator; ... $validator = Validator::make( Input::all(), array( 'username' => 'required', 'password' => 'required|min:8' ) ); if ($validator->fails()) { return $validator->messages(); }
... "required" => ":attribute是必需的。" ... 'attributes' => [ ... 'username' => '用户名' ... ] //用户名是必需的。
- Authentication用户认证:laravel的auth模块简直就是个神作,封装了基本的用户登录与注销方法,并且十分简洁,一条语句即可实现从检验、存入session到后续check。
use Auth; Auth::attempt(['name'=>value, 'password'=>$password], Boolean $remember, Boolean $login);//password会自行Hash加密后对比 Auth::viaRemember();//检查是否可通过remember进行登录 Auth::loginUsingId(1);//通过id登录 Auth::validate($credentials);//仅检查不登录 Auth::once($credentials);//仅在当前request中进行登录,不留下cookie或session $user=User::find(1); Auth::login($user);//手动登录 Auth::check();//检查是否登录 Auth::user()->name;//获取已登录用户的信息 Auth::logout();//登出
- 在路由中设置某条为home,即可在其余controller中使用home方法跳转到该页面
Route::get('/', ['as'=>'home', 'uses'=>'homeController@index]); use Redirect; ... return Redirect::home(statusCode);