Laravel 5.2 - 为用户创建密码

3

我希望实现后端用户管理,但是如何为用户设置哈希密码呢?

我的控制器:

public function store(Request $request)
{
    $this->validate($request, ['email' => 'required', 'name' => 'required', 'password' => 'required', 'surname' => 'required', ]);


    $user = new User($request->all());
    $user->password=bcrypt($request);
    $user->save();


    return redirect('dash/users');
}

视图

        <div class="form-group {{ $errors->has('password') ? 'has-error' : ''}}">
            {!! Form::label('password', trans('users.password'), ['class' => 'col-sm-3 control-label']) !!}
            <div class="col-sm-6">
                {!! Form::text('password', null, ['class' => 'form-control', 'required' => 'required']) !!}
                {!! $errors->first('password', '<p class="help-block">:message</p>') !!}
            </div>
        </div>

现在已经修复了,函数可以正常工作,并且我的新用户已存储在数据库中,但是当我尝试使用它们登录时,登录表单说“未找到任何记录”,为什么?


现在没问题了,请修改为:$user->password = bcrypt($request->password); - user0111001101
4个回答

3
你需要将密码文本传递给bcrypt,而不是整个$request。
$user->password=bcrypt('yourpasswordtext');

谢谢,我会处理!数据已存储在我的数据库中,但当我尝试登录时却无法工作,显示“记录未找到”。为什么?这可能是我的视图问题吗? - user0111001101

0

针对Laravel 5.6+版本

应使用Hash::make($password)对密码进行哈希处理


0
<?php

namespace App\Http\Controllers\Dash;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Auth;
use App\User;

use App\Report;
use App\Category;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Session;

class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return void
     */
    public function index()
    {
        $users = User::paginate(15);

        return view('dash.users.index', compact('users'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return void
     */
    public function create()
    {
        return view('dash.users.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return void
     */

    public function store(Request $request)
    {
        $this->validate($request, ['email' => 'required', 'name' => 'required', 'password' => 'required', 'surname' => 'required', ]);


        $user = new User($request->all());
        $user->password = bcrypt($request);
        $user->save();

        return redirect('dash/users');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function show($id)
    {
        $user = User::findOrFail($id);

        return view('dash.users.show', compact('user'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function edit($id)
    {
        $user = User::findOrFail($id);

        return view('dash.users.edit', compact('user'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function update($id, Request $request)
    {
        $this->validate($request, ['email' => 'required', 'name' => 'required', 'password' => 'required', 'surname' => 'required', ]);

        $user = User::findOrFail($id);
        $user->update($request->all());

        Session::flash('flash_message', 'User updated!');

        return redirect('dash/users');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     *
     * @return void
     */
    public function destroy($id)
    {
        User::destroy($id);

        Session::flash('flash_message', 'User deleted!');

        return redirect('dash/users');
    }
}

更新,这是控制器


我的意思是控制器代码,您在其中检查电子邮件和密码。 - Shyam Naru
登录检查功能在哪里? - Shyam Naru
这里没有问题,我只是按照AuthController的方式操作,哪里出错了?如果我使用“默认注册”来注册新用户,它可以工作,但是使用我的CRUD不起作用(只有登录)。 - user0111001101
我想看看你在点击登录按钮时调用的函数。 - Shyam Naru
我应该在哪里找到它?我通过资源->视图->授权->login.blade.php下的默认登录表单进行登录。 - user0111001101
你应该有一个路由,其中你的表单操作指向检查该路由。 - Shyam Naru

0
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

/* ruote for Admin */
Route::group(['middleware' => ['web']], function () {
    Route::resource('dash/reports', 'Dash\\ReportsController');
});
Route::group(['middleware' => ['role:admin']], function () {
    Route::resource('dash/categories', 'Dash\\CategoriesController');
});

Route::group(['middleware' => ['role:admin']], function () {
    Route::resource('dash/roles', 'Dash\\RolesController');
});
Route::group(['middleware' => ['role:admin']], function () {
    Route::resource('dash/permissions', 'Dash\\PermissionsController');
});
Route::group(['middleware' => ['role:admin']], function () {
    Route::resource('dash/users', 'Dash\\UsersController');
});

/* another routes */
Route::auth();
Route::get('/provola', 'HomeController@autorizzazione');
Route::get('/home', 'HomeController@index');
Route::get('/', function () {return view('welcome');});


/* injection for user roles 

Route::get('/start', 'HomeController@inject');
*/

我的路由


solved: http://stackoverflow.com/questions/37038558/laravel-5-2-login-issue/37039486#37039486 - user0111001101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接