Flutter Laravel认证插件laravel_auth_slate的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter Laravel认证插件laravel_auth_slate的使用

在您的Flutter项目中添加依赖:

dart pub add laravel_auth_slate

这将在您的包的pubspec.yaml文件中添加如下一行(并运行隐式的dart pub get):

dependencies:
  ...
  laravel_auth_slate: ^1.2.3

使用

第一步:在项目中运行以下命令

dart run laravel_auth_slate:main publish:all

如果是使用Nylo框架:

metro publish:slate laravel_auth_slate

第二步:更新config/events.dart文件中的事件

将以下内容从:

// from
SyncAuthToBackpackEvent: SyncAuthToBackpackEvent<User>(),

// to 
SyncAuthToBackpackEvent: SyncAuthToBackpackEvent<LaravelAuthResponse>(),

路由

初始路由应为LandingPage。请转到routes/router.dart文件并更新如下内容:

appRouter() => nyRoutes((router) {
 ...
 router.route(LandingPage.path, (context) => LandingPage(), initialRoute: true); // 设置为初始路由
 
});

更新.env文件

在您的Nylo项目中,导航到.env文件并更新如下内容:

APP_URL="https://nylo.dev" // 旧URL

APP_URL="http://examplelaravel.test" // 您的Laravel项目URL

Laravel项目

安装Laravel Composer包laravel-nylo-auth

您可以使用Composer安装该包:

composer require nylo/laravel-nylo-auth

然后发布资源:

php artisan vendor:publish --provider="Nylo\LaravelNyloAuth\LaravelNyloAuthServiceProvider"

现在,构建并运行应用,并尝试登录、注册和使用忘记密码页面。

更多信息,请参阅Laravel包

要求

  • Dart >= 2.19.0
  • Flutter >= 3.10.0

生成的文件

页面

  • LoginPage
  • RegisterPage
  • LandingPage
  • DashboardPage
  • AuthLandingPage

控制器

  • LoginController
  • RegisterController
  • ForgotPasswordController

事件

  • LaravelAuthEvent

网络

  • LaravelApiService
  • LaravelAuthService

模型

  • AuthUser
  • AuthResponse

更改日志

有关最近更改的信息,请参阅CHANGELOG

许可证

MIT许可证。更多信息请查看LICENSE文件

完整示例Demo

以下是完整的示例代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Nylo Slate Package',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Nylo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Text("Nylo Slate Package"),
      ),
    );
  }
}

更多关于Flutter Laravel认证插件laravel_auth_slate的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Laravel认证插件laravel_auth_slate的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,作为一个IT专家,下面我将提供一个关于如何在Flutter项目中使用laravel_auth_slate插件来进行Laravel认证的代码示例。这个插件通常用于简化Flutter前端与Laravel后端之间的认证流程。

前提条件

  1. Flutter环境:确保你已经安装并配置好了Flutter开发环境。
  2. Laravel后端:确保你的Laravel后端已经设置好了认证系统(如使用Passport或Sanctum进行API认证)。

步骤

1. 安装laravel_auth_slate插件

在你的Flutter项目中,通过pubspec.yaml文件添加laravel_auth_slate依赖:

dependencies:
  flutter:
    sdk: flutter
  laravel_auth_slate: ^最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Laravel后端

确保你的Laravel后端已经配置好了API认证。这里以Sanctum为例:

  • 安装Sanctum:composer require laravel/sanctum
  • 发布Sanctum配置文件:php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • 配置Sanctum中间件:在api中间件组中添加EnsureFrontendRequestsAreStateful::class
  • 配置Sanctum模型:在config/sanctum.php中设置stateful
  • 创建认证相关的路由和控制器

3. 在Flutter中使用laravel_auth_slate

下面是一个简单的示例,展示如何在Flutter中使用laravel_auth_slate进行注册和登录。

import 'package:flutter/material.dart';
import 'package:laravel_auth_slate/laravel_auth_slate.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AuthScreen(),
    );
  }
}

class AuthScreen extends StatefulWidget {
  @override
  _AuthScreenState createState() => _AuthScreenState();
}

class _AuthScreenState extends State<AuthScreen> {
  final LaravelAuthService _authService = LaravelAuthService(
    baseUrl: 'https://your-laravel-api-base-url.com',
    clientId: 'your-sanctum-client-id',
    clientSecret: 'your-sanctum-client-secret',
  );

  void _registerUser() async {
    try {
      var response = await _authService.register(
        email: 'user@example.com',
        password: 'password123',
        name: 'John Doe',
      );
      print('Registration successful: ${response.data}');
    } catch (e) {
      print('Registration error: $e');
    }
  }

  void _loginUser() async {
    try {
      var response = await _authService.login(
        email: 'user@example.com',
        password: 'password123',
      );
      print('Login successful: ${response.data}');
      // Save the token and user info for later use
      // e.g., _authService.saveToken(response.data.token);
    } catch (e) {
      print('Login error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Auth Screen'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            ElevatedButton(
              onPressed: _registerUser,
              child: Text('Register'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _loginUser,
              child: Text('Login'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 安全性:不要在客户端代码中硬编码敏感信息,如clientSecret。在实际应用中,你可能需要采取更安全的方式来管理这些凭据。
  2. 错误处理:示例中的错误处理非常基础。在实际应用中,你应该添加更详细的错误处理和用户反馈。
  3. 持久化:登录成功后,你可能需要持久化令牌和用户信息,以便在后续请求中使用。这通常可以通过使用Flutter的SharedPreferences或类似机制来实现。

这个示例提供了一个基本的框架,展示了如何在Flutter中使用laravel_auth_slate插件与Laravel后端进行认证交互。根据你的具体需求,你可能需要进一步调整和扩展这个示例。

回到顶部