Я бы не скрывал идентификатор от URL-адреса. Зачем? потому что это только замаскирует проблему.
Рассмотрим, имеющий класс, определяемый как:
class Post {
String title
String content
User user //you need this to keep track of the posts owner
//You could use your own custom class or the one used in spring security
...
}
Если вы используете Spring Security Ядро, вы должны использовать fucntion аналогичную:
def springSecurityService
@Secured(['ROLE_USER'])
def myFunction(Long id){
def postInstance = Post.read(id)
if(postInstance){
if (postInstance.user.id ==(long)springSecurityService.principal.id){
// springSecurityService?.principal?.id retrieves the id of the user in session
//... redirect to details of whatever you need
}else{
//... redirect because it is not the owner of the post
}
}
else{
//... Redirect or something
}
}
Если вы используете простую сеанса необходимо будет иметь такую функцию, как
def myFunction(Long id){
def postInstance = Post.read(id)
long userId = session["user_id"]
if(postInstance && userId > 0){
if (postInstance.user.id ==userId){
//... redirect to details of whatever you need
}else{
//... redirect because it is not the owner of the post
}
}
else{
//... Redirect or something
}
}
Логика очень похожа. Еще в моем скромном мнении вы должны использовать плагин Spring Security.
Зачем вам это нужно? можете ли вы предоставить более подробную информацию? потому что кажется, что у такого вопроса может быть много возможных ответов, и никто из них не будет прав –
ОК, я вижу. то кодирование, скрытие, POST или что-то подобное не поможет. вам нужен плагин безопасности, см. плагин Spring-security-core. –
@IgorArtamonov. Я устал ** плагин Spring Spring **, но я обнаружил, что кто-то получил указанную роль в действии ** @ Secure ('ROLE_UESR') ** может получить доступ к другим данным для одного и того же действия. – grails