2012-12-27 75 views
-1

我正在構建一個應用程序,我的客戶希望實現一個具有組權限的基本身份驗證系統。都好。
PHP:用戶的自定義頁面登陸

我想解決的問題是,他希望能夠爲每個用戶組設置默認的登陸URL,當他們登錄時。他想通過表單來做到這一點,所以它不能被硬編碼。

例如:Administratror的默認網址是

的myapp /儀表板

和作家將

的myapp /寫

起初,我想爲所有url創建表並將它們連接到groupPermissions表,但它看起來有點多餘。

我的應用程序是用Laravel PHP框架構建的。

問題:解決此問題的最佳方法是什麼?

+0

當你說「基本認證」你是指HTTP基本認證?我問,因爲使用HTTP基本身份驗證會真正限制您的應用程序如何與身份驗證機制交互。 –

+0

是否每個用戶只有一個組?用組名和應用程序/路徑配對製作一張表。然後在他們完成登錄時查看它。如果他們可以有多個組,我會考慮建立角色增強的角色並使用角色來匹配URL片段。 –

+0

@MikeBrant你是什麼意思?我正在使用Laravel篩選器來檢查登錄用戶對權限表的權限。 – intelis

回答

3

這取決於您希望系統的靈活性。如果將在管理面板中更改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; 
} 

這真是opini的問題上。你應該關心的唯一問題是如何存儲URI路由並統一訪問它們的集中位置。