doure5236 2017-04-15 12:57 采纳率: 0%
浏览 57
已采纳

流明中的用户认证

I'm trying to enable basic user authentication username, and password into my Lumen application.

In app.php file, the following has been uncommented as explained in https://lumen.laravel.com/docs/5.4/authentication

 $app->withFacades();
 $app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
 ]);
  $app->register(App\Providers\AuthServiceProvider::class);

My Route looks like this:

 $app->post('auth/register', ['uses' => 'Auth\AuthController@postRegister']);

My Controller looks like this:

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use Illuminate\Http\Request;
use Auth;
use App\User;
 class AuthController extends Controller {

/**
 * Create a new authentication controller instance.
 *
 * @return void
 */
public function __construct()
{

}

public function postRegister(Request $request, UserRepository $userRepository)
{
    $this->validate($request, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
    ]);

    $user = $userRepository->store($request);

    Auth::login($user);

    return ['result' => 'success'];
}
}

I have been getting a combination of weird and wonderful errors, currently I'm getting:

ReflectionException in BoundMethod.php line 155:
Class App\Repositories\UserRepository does not exist

I've done some extensive google searching, but there doesn't seem to be many documented uses of user auth in Lumen so looking for a pointer as to what I've missed here.

  • 写回答

2条回答 默认 最新

  • dtid30526 2017-08-14 23:31
    关注

    My initial error: I was looking for a method of logging in a user, what I should have been looking for was authentication. Thinking about what I actually needed to achieve I came up with the below functions:

    1. Create user
    2. Delete user
    3. Verify user

    With that in mind I ended up with something like the below:

    <?php
    namespace App\Http\Controllers\Auth;
    use App\User;
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    //Required to hash the password
    use Illuminate\Support\Facades\Hash;
    
    class AuthController extends Controller {
        /**
         * Create a new authentication controller instance.
         *
         * @return void
         */
        public function __construct()
        {
    
        }
    
        public function validateRequest(Request $request) {
          $rules = [
              'email' => 'required|email|unique:users',
              'password' => 'required|min:6'
          ];
          $this->validate($request, $rules);
        }
    
    
        //Get the input and create a user
        public function store(Request $request) {
            $this->validateRequest($request);
            $user = User::create([
                'email' => $request->get('email'),
                'password'=> Hash::make($request->get('password'))
            ]);
            return response()->json(['status' => "success", "user_id" => $user->id], 201);
        }
    
    
       //delete the user
       public function destroy($id) {
              $user = User::find($id);
              if(!$user){
                  return response()->json(['message' => "The user with {$id} doesn't exist"], 404);
              }
              $user->delete();
              return response()->json(['data' => "The user with with id {$id} has been deleted"], 200);
            }
    
    
        //Authenticate the user
        public function verify(Request $request) {
          $email = $request->get('email');
          $password = $request->get('password');
          $user = User::where('email', $email)->first();
          if($user && Hash::check($password, $user->password)) {
            return response()->json($user, 200);
          }
          return response()->json(['message' => "User details incorrect"], 404);
        }
    
    
        //Return the user
        public function show($id) {
          $user = User::find($id);
          if(!$user) {
            return response()->json(['status' => "invalid", "message" => "The userid {$id} does not exist"], 404);
          }
            return response()->json(['status' => "success", 'data' => $user], 200);
        }
    
        //Update the password
        public function update(Request $request, $id) {
          $user = User::find($id);
          if(!$user){
              return response()->json(['message' => "The user with {$id} doesn't exist"], 404);
          }
          $this->validateRequest($request);
          $user->email        = $request->get('email');
          $user->password     = Hash::make($request->get('password'));
          $user->save();
          return response()->json(['data' => "The user with with id {$user->id} has been updated"], 200);
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵