Можно ли установить область видимости для класса домена? - PullRequest
1 голос
/ 18 июля 2011

Я хотел бы знать, возможно ли с помощью grails указать область видимости для классов домена.

Несколько слов, чтобы объяснить, как работает мое приложение в данный момент: - доступ к базе данных осуществляется через внешний«модуль» с использованием SQLJ.Этот модуль является пользователем контроллеров в моем приложении Grails.- пользователь запрашивает конкретную информацию, отправляя формы -> запрос передается во внешний модуль -> информация извлекается из базы данных -> информация загружается в базу данных grails mem (HSQL) -> информация отображается в представлениях.

Работаетхорошо в среде разработки, так как я единственный, кто использует приложение.Но мне интересно, как приложение будет вести себя с двумя или более пользователями.Я имею в виду, будет ли информация, загруженная в базу данных Grails, распределяться между пользователями или нет?И как не делиться информацией, запрошенной одним пользователем, с другими?

Заранее благодарим за любую помощь по этому вопросу.

С уважением.

Ответы [ 3 ]

1 голос
/ 18 июля 2011

Все данные в базе данных являются общими для всех пользователей приложения Grails. Вам нужно будет написать собственный запрос, чтобы ограничить данные, возвращаемые конкретному пользователю. На основании вашего приложения может быть что-то похожее на следующее.

class DomainClass1 {
//fields you get from SQLJ go here
int userId
}

Чтобы получить данные в экземпляр класса вашего домена.

def domInstance=new DomainClass1()
domInstance.loadFromSQLJ() //call the SQLJ module and put it's data in the domain class
domInstance.userId=5 //assign the user associated with this info
domInstance.save()

Затем, когда вы хотите отобразить информацию для пользователя с идентификатором пользователя 5

def domInstance2=DomainClass1.findByUserId(5)
//Do stuff with domInstance2
1 голос
/ 18 июля 2011

В нашем проекте мы отвергли доменные классы get(), list(), которые учитывают совокупный корень домена (User или любой другой), а также проверили все именованные запросы.

Это исключает все другие средства доступа к экземплярам, ​​такие как findBy*(), критерии, findWhere() (хотя вы также можете переопределить динамические методы) или HQL, но в любом случае уменьшает количество проверок безопасности на 80%.

Неожиданно оказалось, что можно использовать DomainClass.list() в строительных лесах.

1 голос
/ 18 июля 2011

Он будет доступен всем пользователям.

Но это зависит от вас, как и для любой другой базы данных, должны быть некоторые критерии (столбец БД), по которым вы можете выбирать только информацию, относящуюся к текущему пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...