2010-03-16 47 views
0

我周围搜索并发现,在MVC体系结构中实现身份验证模块时,有些人选择将用户控制器中的登录相关操作置于用户控制器中,而其他人将其放置在控制器中仅专用于身份验证。MVC中登录/身份验证相关操作的位置

在伪java的类似的代码:

class UserController extends Controller { 

    public login() { 
     //... 
    } 
} 

访问带有http://mydomain.com/user/login

class AuthController extends Controller { 

    public login() { 
     //... 
    } 
} 

访问带有http://mydomain.com/auth/login

我想知道哪种方法更好,为什么。也就是说,如果真的有什么区别的话。

在此先感谢。

回答

2

IMO:

  • 的东西处理实际的登录应该是一个控制器,像UserController你的建议。
  • 持久认证(例如检查用户是否已登录)可能只是UserModel中的某些功能,您可以从任何控制器调用该功能。

根据不同的情况,你可能需要某种形式的重定向到登录页面,如果用户没有登录全局函数。

1

我更喜欢第一种方法,简单地推理认证是与用户有关的操作。一般来说,我更喜欢我的控制器来反映我的逻辑交易的真实生活实体。