Size: a a a

Laravel для начинающих

2020 March 20

Д

Дмитрий in Laravel для начинающих
user name
Во-первых, чтобы проверить авторизированн или нет юзер используйте Auth:check()

Во-вторых, сделайте метод готовый в моделе user что-то вроде такого
...
function isAdmin() {
 Return $this->role ===10;
}
И на этом подобии все остальные роли тоже пройдите. Вдруг вы в дальнейшем измените ID ролей  или у вас пользователю можно станет присваивать несколько ролей. Тогда вам не придётся ползать по всему проект и править эту проверку

В-третьих, вносите логику разграничений доступа из route файла. Этот файл вообще не должен такие вещь знать. Создавайте свои Middleware на подобии onlyForAdmin и убираейте туда все маршруты, которые доступны только для алмина


В-четвёртых, как сказали выше, вы не можете без подключения Middleware получить авторизированного пользователя,. Т к. Именно там и происходит формирование данных авторизированного пользователя =)
Товариши помогите решить проблему с авторизацией Passport.
Вообщем, я делаю get запрос к главное странице сайта, и если пользователь не авторизован то отправлять его на /login
Я скопировал стандартный middleware Authenticate и назвал его AuthenticateView и в нем пишу такой код
if (! $request->expectsJson()) {
           return route('login');
       }

Этот мидлвейр для запросов к роутингу Laravel а стандартный Authenticate возвращает
exit("nologin");
для JS запросов на vue.

В роутере Laravel  web.php я делаю
Route::middleware('authView:api')->get('/', function (Request $request) {


И меня всегда перебрасывает на /login

если убираю middlware то попадаю на страницу где идет запрос на получение данных :
window.axios.get("api/data").then(response => { this.user = response.data });

И все данные авторизации возвращаются.

Route::middleware('auth:api')->get('/user', function (Request $request) {
   return $request->user();
});


Вопрос в том, почему не срабатывает middleware И всегда показывает что я не авторизирован и бросает на /login
источник

VS

Vip Sklad in Laravel для начинающих
Спасибо большое за советы!!!
источник

VS

Vip Sklad in Laravel для начинающих
Dmitry Pavlichenko
Больше возможностей - дороже разработка. Есть деньги - делай офигенную корзину с гейшами и го. Нет - делай просто и быстро :)
Спасибо,большое, за рекомендации!!!!
источник

V

Vladij in Laravel для начинающих
Дмитрий
Товариши помогите решить проблему с авторизацией Passport.
Вообщем, я делаю get запрос к главное странице сайта, и если пользователь не авторизован то отправлять его на /login
Я скопировал стандартный middleware Authenticate и назвал его AuthenticateView и в нем пишу такой код
if (! $request->expectsJson()) {
           return route('login');
       }

Этот мидлвейр для запросов к роутингу Laravel а стандартный Authenticate возвращает
exit("nologin");
для JS запросов на vue.

В роутере Laravel  web.php я делаю
Route::middleware('authView:api')->get('/', function (Request $request) {


И меня всегда перебрасывает на /login

если убираю middlware то попадаю на страницу где идет запрос на получение данных :
window.axios.get("api/data").then(response => { this.user = response.data });

И все данные авторизации возвращаются.

Route::middleware('auth:api')->get('/user', function (Request $request) {
   return $request->user();
});


Вопрос в том, почему не срабатывает middleware И всегда показывает что я не авторизирован и бросает на /login
возможно ты не авторизирован
источник

Д

Дмитрий in Laravel для начинающих
Vladij
возможно ты не авторизирован
я же говорю, убираю мидл, и попадаю на главную страницу сервиса где по запросу загружаются мои данные
источник

V

Vladij in Laravel для начинающих
Дмитрий
я же говорю, убираю мидл, и попадаю на главную страницу сервиса где по запросу загружаются мои данные
а как ты проводишь авторизацию по апи?
источник

Д

Дмитрий in Laravel для начинающих
Vladij
а как ты проводишь авторизацию по апи?
public function register(Request $request)
   {
       $valData =  [
           "login" => $request->input("login"),
           "password" => $request->input("password")
       ];
       $valData['password'] = bcrypt($valData["password"]);
       $user = User::create($valData);
       $accessToken = $user->createToken('authToken')->accessToken;
       return response(['user' => $user, 'access_token' => $accessToken]);
   }
источник

DP

Dmitry Pavlichenko in Laravel для начинающих
Дмитрий
Товариши помогите решить проблему с авторизацией Passport.
Вообщем, я делаю get запрос к главное странице сайта, и если пользователь не авторизован то отправлять его на /login
Я скопировал стандартный middleware Authenticate и назвал его AuthenticateView и в нем пишу такой код
if (! $request->expectsJson()) {
           return route('login');
       }

Этот мидлвейр для запросов к роутингу Laravel а стандартный Authenticate возвращает
exit("nologin");
для JS запросов на vue.

В роутере Laravel  web.php я делаю
Route::middleware('authView:api')->get('/', function (Request $request) {


И меня всегда перебрасывает на /login

если убираю middlware то попадаю на страницу где идет запрос на получение данных :
window.axios.get("api/data").then(response => { this.user = response.data });

И все данные авторизации возвращаются.

Route::middleware('auth:api')->get('/user', function (Request $request) {
   return $request->user();
});


Вопрос в том, почему не срабатывает middleware И всегда показывает что я не авторизирован и бросает на /login
Хм... А почему запрос к API делается через web.php, а не через api.php?
источник

V

Vladij in Laravel для начинающих
Dmitry Pavlichenko
Хм... А почему запрос к API делается через web.php, а не через api.php?
ггг) глазастый)
источник

Д

Дмитрий in Laravel для начинающих
Dmitry Pavlichenko
Хм... А почему запрос к API делается через web.php, а не через api.php?
хм, ок. А как мне в web,php проверить авторизирован ли пользователь или нет
источник

V

Vladij in Laravel для начинающих
Дмитрий
хм, ок. А как мне в web,php проверить авторизирован ли пользователь или нет
так же
источник

DP

Dmitry Pavlichenko in Laravel для начинающих
Дмитрий
хм, ок. А как мне в web,php проверить авторизирован ли пользователь или нет
Bearer там...
источник

Д

Дмитрий in Laravel для начинающих
Это самое важное. Мне нужно что бы в роуте web,php при переходе на главную страницу /
проводилась проверка, авторизирован ли пользователь или нет. Если да, то проверить его роль, и если он админ то сделать редирект в laravel в админ панель
источник

DP

Dmitry Pavlichenko in Laravel для начинающих
Дмитрий
Товариши помогите решить проблему с авторизацией Passport.
Вообщем, я делаю get запрос к главное странице сайта, и если пользователь не авторизован то отправлять его на /login
Я скопировал стандартный middleware Authenticate и назвал его AuthenticateView и в нем пишу такой код
if (! $request->expectsJson()) {
           return route('login');
       }

Этот мидлвейр для запросов к роутингу Laravel а стандартный Authenticate возвращает
exit("nologin");
для JS запросов на vue.

В роутере Laravel  web.php я делаю
Route::middleware('authView:api')->get('/', function (Request $request) {


И меня всегда перебрасывает на /login

если убираю middlware то попадаю на страницу где идет запрос на получение данных :
window.axios.get("api/data").then(response => { this.user = response.data });

И все данные авторизации возвращаются.

Route::middleware('auth:api')->get('/user', function (Request $request) {
   return $request->user();
});


Вопрос в том, почему не срабатывает middleware И всегда показывает что я не авторизирован и бросает на /login
"get запрос к главное странице сайта"
— имеется в виду Ajax-запрос?
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Дмитрий
public function register(Request $request)
   {
       $valData =  [
           "login" => $request->input("login"),
           "password" => $request->input("password")
       ];
       $valData['password'] = bcrypt($valData["password"]);
       $user = User::create($valData);
       $accessToken = $user->createToken('authToken')->accessToken;
       return response(['user' => $user, 'access_token' => $accessToken]);
   }
Фу
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Зачем?
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
В ларе есть встроенный контроллер регистрации
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Для создания токена ты можешь использовать https://github.com/laravel/ui/blob/2.x/auth-backend/RegistersUsers.php#L64
источник

Д

Дмитрий in Laravel для начинающих
У меня рега на vue.js
источник

Д

Дмитрий in Laravel для начинающих
Скажите, я не верно делаю? или я просто лишнее делаю?
источник