当前位置: 首页 > 知识库问答 >
问题:

Laravel Passport API注册新用户

贺俊材
2023-03-14

我试图为我的网络应用程序建立一个登录系统,但我无法让Passport工作。该应用程序是作为REST API构建的,因此用户应该能够使用电子邮件和密码注册,之后他们应该能够使用这些凭据登录(所以我认为他们需要在登录凭据时从Passport接收访问令牌是正确的)。

我想我可以只向“注册”路径发送一个JSON帖子来注册一个新用户,然后向“登录”路径发送一个帖子来将访问令牌返回到客户端,但据我所知,没有这样的事情。

如何注册新用户?

共有2个答案

龙涵蓄
2023-03-14

我在这里面临着同样的问题,现在我找到的最好的解决方案是通过创建一个UserController和一个像这样的存储方法来手动创建寄存器方法

public function store(Request $request) {
    $data=$request->only('name', 'email','password');
            $valid = validator(
                    $data, [
                'name' => 'required|string|max:255',',
                'email' => 'required|string|email|max:155|unique:users',
                'password' => 'required|string|min:4',
            ]);

            $return=null;
            if ($valid->fails()) {
                $return = response()->json($valid->errors()->all(), 400);

            }else{
                $data['password']=Hash::make($data['password']);
                #return = User::create($data);
            }        
            return $return;
}
壤驷茂实
2023-03-14

如果您正在构建SPA并使用默认Laravel注册、登录、忘记密码,

这几行告诉Laravel在导航到web注册控制器重定向路径之前,先查看预期的url。

   /**
     * The user has been registered.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function registered(Request $request, $user)
    {
        if ($request->session()->has('url.intended')) {
            return redirect()->intended();
        }
    }

例如,我在Vue上使用带有PKCE授权的授权代码。js证监会

<template>
  <v-app-bar app flat>
    <button-login @login="authorize"></button-login>

    <span>|</span>

    <button-register @register="authorize"></button-register>
  </v-app-bar>
</template>

<script>
import ButtonLogin from '@/components/Buttons/ButtonLogin'
import ButtonRegister from '@/components/Buttons/ButtonRegister'
import { base64URL, encrypt, hashMake, randomString } from '@/helpers'
import sha256 from 'crypto-js/sha256'
import httpBuildQuery from 'http-build-query'
import { SERVICE } from '@/config/services'
import { STORAGE_API_AUTHORIZATION_STATE, STORAGE_API_CODE_VERIFIER } from '@/config/storage'

export default {
  name: 'AppBar',

  components: {
    ButtonLogin,
    ButtonRegister
  },

  authorize() {
      const authorizationState = randomString(40)

      const codeVerifier = randomString(128)

      const codeChallenge = base64URL(sha256(codeVerifier))

      const query = httpBuildQuery({
        client_id: SERVICE.CLIENT_ID,
        redirect_uri: authorizationURL,
        response_type: 'code',
        scope: '*',
        state: authorizationState,
        code_challenge: codeChallenge,
        code_challenge_method: 'S256'
      })

      localStorage.setItem(
        STORAGE_API_AUTHORIZATION_STATE,
        hashMake(authorizationState)
      )

      localStorage.setItem(
        STORAGE_API_CODE_VERIFIER,
        encrypt(codeVerifier, authorizationState)
      )

      location.href = `${SERVICE.API_URL}/oauth/authorize?${query}`
    }
}
</script>

每当用户单击我的SPA上的登录/注册按钮时,它将重定向到我的API OAuth授权页面。

身份验证中间件将拦截请求并检查用户的登录状态,如果用户未经身份验证,则将用户重定向到登录页面。

如果用户选择通过点击注册按钮注册他/她的帐户,我们会将用户重定向到web注册页面(仍然在API上而不是SPA上)。

用户注册后,控制器将调用registered方法并检查是否存在预期的URL,如果存在,则我们可以将用户重定向到预期的URL(oauth/authorizeendpoint),注册过程后可以继续授权过程。

 类似资料:
  • 新增ISV有两种方式 方式1 启动sop-admin,在admin后台ISV管理添加 方式2 启动sop-website-server,用户访问自主注册

  • 接口说明 注册用户 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /usercenter/api/register/v1.0.0/registerUser 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 loginName string formData 是 用户登录 mobile string formDa

  • 接口说明 注册用户 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /usercenter/api/register/v1.0.0/reg

  • 我正在使用Laravel。我想禁用新用户的注册,但我需要登录才能工作。 如何禁用注册表/路由/控制器?

  • 如何注册一个新用户,而不通过管理员,keycloak提供了一个界面来注册一个新的用户URL,以便直接在浏览器中注册新用户: http://localhost:8080/auth/realms/myrealm/login-行动/注册?客户id=clientid 但我找不到注册的rest API的endpoint。我成功地使用admin rest API添加了一个用户,但我想注册一个新用户,但不提及a

  • 我有一个用例,我想将a作为JSON到我的服务,然后服务应该注册一个新用户(使用给定的和自动生成的密码)。 数据 我正在使用,我面临的问题是: 每当我尝试HTTP 用户名时,服务已经要求身份验证(用户名和密码)。这不是我想要的原因。我希望注册 API 是完全公开的。这意味着每个人(未经授权)都可以一个新的用户名,从而“打开帐户”。 我不确定我怎样才能达到想要的行为。服务的一部分应该是公共的(就像上面