4

我在網上瀏覽找到某種教程,但我無法找到它。 我想我可以只使用提供securesocial任何人使用securesocial實現deadbolt或任何其他授權機制?

例如Twitter的例子:

def onlyAdmin = SecuredAction(WithAuth("admin")) { implicit request => 
     Ok("You could see this since you are admin") 
} 

case class WithAuth(role: String) extends Authorization { 
    def isAuthorized(user: Identity) = { 
val existingDbUser = User.findUserByProviderUserId(user) 
    existingDbUser.hasRole(role) 
} 

User.findUserByProviderUserId(user)調用數據庫查找存儲的用戶,它的作用。 我不希望每次都調用db,並使用Identity

你會如何解決這個問題?

回答

2

這將是正確的做法。你可以從UserService.save()方法返回你自己模型的一個實例(只要它實現了Identity)。這將允許您返回您的用戶對象,然後直接運行user.hasRole(角色),而無需再次查詢數據庫。但是查詢需要在某個時候完成。

相關問題