7

I am new with grails and on my web application i want to generate a random token with 15 characters length along with username. And tokens must be unique.

All characters from a-z and 0-9 can be use, but no special characters. I have tried to generate random token with

def generator = {String alphabet, int n -> new Random().with { (1..n).collec alphabet[ nextInt( alphabet.length() ) ] }.join() }} generator( (('A'..'Z')+('0'..'9')).join(), 9 )

but how can i append username infront of token like "JayKay586464ASDHH445"

JiniKJohny
  • 1,172
  • 13
  • 29
  • Could you explain in details? from my side username + token should work :) – uladzimir Mar 12 '14 at 10:05
  • unique random token is must for my app. so i need to append username along with token genarated. but how can i append username along with generator in this case – JiniKJohny Mar 12 '14 at 10:32
  • you can just use operator "+" to concatenate strings – uladzimir Mar 12 '14 at 10:49
  • Shame you [can't just use](http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates) `UUID.randomUUID()` – tim_yates Mar 12 '14 at 10:51

2 Answers2

9

String confirmCode= UUID.randomUUID().toString() use this codeto generate token, then use "+" to concatenate string

An Ish A
  • 711
  • 5
  • 18
5

How about this? The username holds the original username without the token, token is the 15 character token and uTok is the username with the token

def generator = { String alphabet, int n ->
  new Random().with {
    (1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
  }
}

def token = generator( (('A'..'Z')+('0'..'9')).join(), 15 )

def username = "JayKay"

def uTok = "${username}${token}"

println "==>${uTok}<=="
Nick De Greek
  • 1,834
  • 1
  • 18
  • 19