【问题标题】:PHP: Custom page landing for users [closed]PHP:用户的自定义页面登陆[关闭]
【发布时间】:2012-12-13 06:09:00
【问题描述】:

我正在构建一个应用程序,我的客户想要实现一个具有组权限的基本身份验证系统。一切顺利。

我要解决的问题是,他希望能够在每个用户组登录时为每个用户组设置默认登陆 url。他希望通过表单来实现,因此不能硬编码。

例如:管理员的默认网址是

我的应用程序/仪表板

而作家会是

我的应用程序/写

起初我想为所有 url 创建表并将它们连接到 groupPermissions 表,但它看起来有点多余。

我的应用是使用 Laravel PHP 框架构建的。

问题:解决这个问题的最佳方法是什么?

【问题讨论】:

  • 当您说“基本身份验证”时,您是指 HTTP 基本身份验证吗?我之所以这么问,是因为使用 HTTP 基本身份验证确实会限制您的应用程序与身份验证机制的交互方式。
  • 每个用户只给一个组吗?使用组名和应用程序/路径配对制作一个表。然后在他们完成登录后查找它。如果他们可以拥有多个组,我会考虑建立按组增加的角色并使用该角色来匹配 URL 片段。
  • @MikeBrant 你这是什么意思?我正在使用 Laravel 过滤器来检查登录用户对权限表的权限。
  • 您将拥有多少个不同的用户/页面连接?
  • 嗯..问题不在于设置网址,我的硬编码部分有问题..如何获取应用程序的所有网址? @dmikester1 用户表与角色表之间存在一对多关系。如此多的用户可以拥有 1 个角色,并且可以将 1 个角色分配给多个用户。

标签: php authorization url-routing laravel


【解决方案1】:

这取决于您希望系统有多灵活。如果要在管理面板中更改 URI 路径,则可以将 URL 存储在某种配置中并在登录时加载它们。

对于我相信您想要的,我会将组中的 URI 定义为常量:

<?php

class Group extends Eloquent {
    const ADMIN_URI = 'myapp/dashboard'; // Could also be named routes.
    const WRITER_URI = 'myapp/write';
}

然后你可以登录一个用户并获取他们的权限组,然后在登录控制器中做这样的检查:

if(defined($redirectUri = sprintf('Group::%s_URI', strtoupper($groupName))) {
    return Redirect::to(constant($redirectUri));
}

或类似的东西:

switch(strtolower($group)) {
    case 'admin':
        return Redirect::to(Group::ADMIN_URI);
        break;
    case 'writer':
        return Redirect::to(Group::WRITER_URI);
        break;
    default:
        return Redirect::to('homepage');
        break;
}

这真的是一个见仁见智的问题。您唯一应该关心的是如何存储 URI 路由并统一访问它们的集中位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    相关资源
    最近更新 更多