我目前正在构建一个与更大的应用程序(Zend 1.x)一起工作的应用程序(使用 Laravel)。
我使用 Laravel Passport 进行 API 身份验证。我需要将 Laravel Passport 默认哈希机制更改为 Zend 哈希才能进行身份验证。
有人可以向我指出一个 API 或我需要重写才能运行它的东西吗?我不想编辑核心 Laravel Passport 代码。
我已经看到了创建自定义用户提供程序和修改validateCredentials()方法的建议,但这些都是针对核心 Laravel 的。
我已经在 User 类中使用 findForPassport 方法来覆盖用户名字段。
public function findForPassport($username)
{
return $this->where('email', $username)->first();
}
Run Code Online (Sandbox Code Playgroud) 我使用 Laravel 作为我的 ionic 应用程序的后端,并使用 Laravel Passport 进行身份验证。当我尝试调用createToken()它Auth时,Call to undefined method
登录.ts:
login(event){
let dataJSON;
let formData = new FormData();
formData.append('email',event.target[0].value)
formData.append('password',event.target[1].value)
this.http.post(ENV.BASE_URL+'/auth', formData)
.subscribe((data) => {
console.log(data);
dataJSON = data;
}, (error) => {
console.log("Error!", error);
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
用户控制器.php:
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Carbon\Carbon;
use App\User;
class UserController extends Controller{
public function auth(Request $request){
$params = $request->only('email', 'password');
$username = $params['email'];
$password = $params['password'];
if(\Auth::attempt(['email' => $username, …Run Code Online (Sandbox Code Playgroud) 这是错误:
RuntimeException: 未找到个人访问客户端。请创建一个。在第 94 行的文件 /var/www/html/pharmacy/vendor/laravel/passport/src/ClientRepository.php 中
这是我的登录功能:
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if (!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString(),
'name' => Auth::user()->name,
'email' => Auth::user()->email,
]);
}
Run Code Online (Sandbox Code Playgroud)
这是我的路线文件api.php:
Route::group([
'prefix' …Run Code Online (Sandbox Code Playgroud) 我试图覆盖issueToken位于的方法\Laravel\Passport\Http\Controllers\AccessTokenController而不添加新的路由,即(api/oauth/token)。我已经构建了自己的AccessTokenController方法来执行我想要的功能,但是当我调用时oauth/token,正在执行父方法而不是我的实现..我是否错过了完成覆盖的某些内容?
<?php
namespace App\Http\Controllers;
use phpseclib\Crypt\RSA;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Psr\Http\Message\ServerRequestInterface;
use \Laravel\Passport\Http\Controllers\AccessTokenController as ATC;
class AccessTokenController extends ATC {
public function issueToken(ServerRequestInterface $request){
try {
// Fetching username from request
$username = $request->getParseBody()['username'];
// Fetching the User
$user = User::where('email', '=', $username);
// Genereting token
$tokenResponse = parent::issueToken($request);
//convert response to json string
$content = $tokenResponse->getBody()->__toString();
$content['email'] = $user['emial'];
//convert json to array
$data = json_decode($content, true);
return $data;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用授权代码授予第三方客户端登录并授予对我的 API 的访问权限。第一步是使用所需的参数在 /oauth/authorize 请求权限。当我这样做时,我收到一条错误响应,显示“Call to a member function getKey() on null”。我注意到即使没有参数我也会遇到同样的错误。
这是我的 web.php 中处理 /redirect 路由的代码。
Route::get('/redirect', function (Request $request) {
$request->session()->put('state', $state = Str::random(40));
$query = http_build_query([
'client_id' => '6',
'redirect_uri' => 'http://127.0.0.1:8000/callback',
'response_type' => 'code',
'scope' => '',
'state' => $state,
]);
return redirect('http://127.0.0.1:8000/oauth/authorize?' . $query);
});
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接向http://127.0.0.1:8000/oauth/authorize发出请求,我会收到如下所示的错误响应。
我正在向 发送 post 请求http://localhost/projects/webdevlist/public/api/register并收到 405 错误:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD.
Run Code Online (Sandbox Code Playgroud)
路线\api.php:
<?php
use Illuminate\Http\Request;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/register', 'Api\AuthController@register');
Run Code Online (Sandbox Code Playgroud)
Api\AuthController.php:
<?php
namespace App\Http\Controllers\Api;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:55',
'email' => 'required|email',
'password' => 'required|confirmed'
]);
$user = User::create($validatedData);
$accessToken = $user->createToken('token')->accessToken;
return response(['user' => $user, 'access_token' …Run Code Online (Sandbox Code Playgroud) 作为 Laravel 5.7 设置的一部分,我正在尝试使用以下命令安装 Passport:
composer require laravel/passport
Run Code Online (Sandbox Code Playgroud)
但它不起作用并给出错误:
Using version ^8.0 for laravel/passport
./composer.json has been updated
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: remove laravel/framework v5.7.15
- Conclusion: don't install laravel/framework v5.7.15
- laravel/passport 8.x-dev requires illuminate/support ^6.0|^7.0 -> satisfiable by laravel/framework[6.x-dev], illuminate/support[6.x-dev, 7.0.x-dev, v6.0.0, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.1.0, v6.2.0, v6.3.0, v6.4.1, v6.5.0, v6.5.1, …Run Code Online (Sandbox Code Playgroud) 我计划将 Laravel Passport System 用于 ANGULAR 6 API。按照文档安装。
但我有一点困惑。请尝试解决它。
1. 如何提供代币?
这是正确的方法吗?
/sf/ask/3794127921/
Run Code Online (Sandbox Code Playgroud)
OR 编码 LIKE 是正确的方法吗?:
$request->request->add([
'username' => $request->email,
'grant_type' => 'password',
'client_id' => env('PASSWORD_CLIENT_ID'),
'client_secret' => env('PASSWORD_CLIENT_SECRET'),
'scope' => '',
]);
// forward the request to the OAuth token request endpoint and Return Token
$res = Route::dispatch(request()->create('oauth/token', 'POST', $this->loginCredentials($request)));
$this->api_response = json_decode($res->getContent());
return response()->json(['token' => $this->api_response,'usersDetail' => $user], 200);
Run Code Online (Sandbox Code Playgroud)
需要使用哪种方法以及为什么请详细说明?
2. 如何处理 Angular 的刷新令牌系统?
就像刷新(鼠标按钮刷新)需要调用Laravel API?应该如何?请用 Laravel 和 Angular 代码详细说明。
请详细回答这个问题。正在寻找好的答案!
我目前很困惑为什么我的令牌响应 JSON 不提供令牌代码。
"token": {
"token": {
"name": "appToken",
"abilities": [
"*"
],
"tokenable_id": 1,
"tokenable_type": "App\\Models\\User",
"updated_at": "2021-08-29T17:35:00.000000Z",
"created_at": "2021-08-29T17:35:00.000000Z",
"id": 7
}
},
Run Code Online (Sandbox Code Playgroud)
这是响应的代码。
public function login()
{
if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
$user = Auth::user();
$success['token'] = $user->createToken('appToken')->accessToken;
//After successfull authentication, notice how I return json parameters
return response()->json([
'success' => true,
'token' => $success,
'user' => $user
]);
} else {
//if authentication is unsuccessfull, notice how I return json parameters
return response()->json([ …Run Code Online (Sandbox Code Playgroud) 我在使用 PHP intelephense 时遇到问题,createToken方法未定义。我不知道如何解决它。但是当我在邮递员中运行它时它就起作用了。我不知道为什么 vscode 不识别它。我还添加了use Laravel\Passport\HasApiTokens; 并在用户模型中使用 HasApiTokens。请帮助我,我已经没有选择了。感谢你们
public function login(Request $request)
{
$login = $request->validate([
'email' => 'required',
'password'=> 'required',
]);
if (!Auth::attempt($login)){
return response()->json(['message' => 'error']);
}
$user = Auth::user();
$token = $user->createToken('Token Name')->accessToken;
return response()->json(['user' => $user, 'token' => $token]);
}
Run Code Online (Sandbox Code Playgroud) laravel-passport ×10
laravel ×7
php ×6
laravel-5 ×4
oauth-2.0 ×4
token ×2
intelephense ×1
laravel-5.4 ×1
laravel-8 ×1
multi-tenant ×1
oauth ×1
post ×1
rest ×1