поставить логическое решение в контроллере или в представлении - PullRequest
1 голос
/ 01 апреля 2012

В моем приложении пользователь может создать сообщение, но только создатель сообщения может удалить его.

Поэтому я должен принять решение для каждого сообщения, когда я их перечислю.

Тогдачто лучше для этого логического решения, в контроллере или в представлении?

Теперь я делаю это в представлении:

Контроллер:

class PostController{
  @RequestMapping("post/list")
  public void list(Model m){
   List<Post> posts=queryPosts();
   m.addAttribute(posts);
  }
}

post_list.ftl

<#list ${posts} as post>
  <span>${post.name}</span>
  <#if ${post.owner}==${session.user}>
    <a href="post/${post.id}/delete">Delete</a>
  </#if>
</#list>

Тогда я хочу знать, является ли это наилучшей практикой?

Если поставить логический обман в контроллере лучшетогда как это сделать?Добавить editable поле сообщения?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Решение в конечном итоге должно быть принято в контроллере. Что в противном случае произошло бы, если бы злоумышленник попытался получить доступ к странице delete?

Тем не менее, рекомендуется показывать пользователям только ссылки на страницы, к которым у них есть доступ.

Spring Security предлагает несколько подходов к защите URL или процедур на основе пользователя, роли или группы.

0 голосов
/ 01 апреля 2012

Окончательное решение и логика о том, какой элемент может быть удален, каким пользователем должен быть принят контроллер. По иронии судьбы, из того, что я вижу в вашем коде, это именно то, что происходит - вы просто решаете, стоит ли показывать ссылку удаления в вашем пользовательском интерфейсе, основываясь на текущем пользователе - что, на мой взгляд, хорошо.

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