小编Bur*_*ith的帖子

Bcrypt为同一输入生成不同的哈希值?

我刚刚为我的新grails项目添加了注册功能.为了测试它,我通过发送电子邮件和密码进行了注册.我使用bcrypt算法对密码进行哈希处理,然后将其保存到数据库中.

但是,当我尝试使用注册时提供的相同电子邮件和密码登录时,登录失败.我调试了应用程序,发现当我尝试与数据库中已经散列的哈希值进行比较时,为同一密码生成的哈希是不同的,因此登录失败(LoginController中的Registration.findByEmailAndPassword(params.email,hashPassd)) .groovy返回null).

这是我的域类Registration.groovy:

class Registration {

   transient springSecurityService

   String fullName
   String password
   String email

   static constraints = {
      fullName(blank:false)
      password(blank:false, password:true)
      email(blank:false, email:true, unique:true)
   }

   def beforeInsert = {
      encodePassword()
   }

   protected void encodePassword() {
      password = springSecurityService.encodePassword(password)
   }
}
Run Code Online (Sandbox Code Playgroud)

这是我的LoginController.groovy:

class LoginController {

   /**
    * Dependency injection for the springSecurityService.
    */
   def springSecurityService

   def index = {
      if (springSecurityService.isLoggedIn()) {
         render(view: "../homepage")
      }
      else {
         render(view: "../index")
      }
   }

   /**
    * Show the login page.
    */ …
Run Code Online (Sandbox Code Playgroud)

grails bcrypt

36
推荐指数
2
解决办法
2万
查看次数

Grails 1.3.7/Java 7兼容性

有没有人幸运使用Java 7运行Grails 1.3.7应用程序?我创建了一个全新的Grails 1.3.7应用程序并尝试在Java 7下运行它.我得到以下错误,但应用程序似乎运行正常.我们有一些1.3.7应用程序,我们不愿意升级到Grails 2.x,所以任何想法都会非常感激.

Unable to use direct char[] access of java.lang.String
java.lang.NoSuchFieldException: count
    at java.lang.Class.getDeclaredField(Class.java:1899)
    at org.codehaus.groovy.grails.web.util.StringCharArrayAccessor.<clinit>(StringCharArrayAccessor.java:53)
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.readAsString(StreamCharBuffer.java:531)
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.toString(StreamCharBuffer.java:552)
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.getValue(FastStringWriter.java:59)
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.toString(FastStringWriter.java:55)
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.startTag(GroovyPageParser.java:1119)
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.page(GroovyPageParser.java:801)
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.generateGsp(GroovyPageParser.java:380)
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.parse(GroovyPageParser.java:326)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.buildPageMetaInfo(GroovyPagesTemplateEngine.java:584)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:493)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateWithResource(GroovyPagesTemplateEngine.java:473)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:246)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateForUri(GroovyPagesTemplateEngine.java:373)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateForUri(GroovyPagesTemplateEngine.java:345)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:262)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:146)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:81)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.renderViewForUrlMappingInfo(UrlMappingsFilter.java:260)
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:189)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245)
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.codehaus.groovy.grails.web.servlet.filter.GrailsReloadServletFilter.doFilterInternal(GrailsReloadServletFilter.java:104)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) …
Run Code Online (Sandbox Code Playgroud)

java grails

19
推荐指数
2
解决办法
9091
查看次数

将ant脚本转换为gradle脚本

如何将ant脚本转换为gradle脚本?嗨,你能帮我把ant脚本转换成gradle脚本吗?我是gradle的新用户.

<property name="pm-dir"                value="${PM-DIR}/${BUILD_NUM}" />
<property name="leis-dir"              value="${LEIS_DIR}/${BUILD_NUM}" />

<property name="proxy-name"             value="${PROXY_JAR_NAME}"/>
<property name="proxy-client-name"      value="${PROXY_CLIENT_JAR_NAME}"/>

<property environment="env"/>
<property name="java-home"              value="${env.JAVA_HOME}"/>

  <condition property="build-pm">
    <equals arg1="True" arg2="${BUILD_PM}" />
</condition>

<condition property="build-LEIS">
    <equals arg1="True" arg2="${BUILD_LEIS}" />
</condition>


<target name="build-LEIS-components" if="build-LEIS">

    <ant antfile="build.xml"
         target="clean"
         dir="${leis-dir}/LEIS"
         inheritAll="false"/>
    <ant antfile="build.xml"
         target="ejbdoclet"
         dir="${leis-dir}/LEIS/BusinessServices"
         inheritAll="false"/>
    <ant antfile="build.xml"
         target="jar"
         dir="${leis-dir}/LEIS"
         inheritAll="false"/>

    <ant antfile="build.xml"
         target="clean"
         dir="${leis-dir}/ETS/trunk/Entitlements"
         inheritAll="false"/>
    <ant antfile="build.xml"
         target="build"
         dir="${leis-dir}/ETS/trunk/Entitlements"
         inheritAll="false"/>

    <mkdir dir="${leis-dir}/JARS/APP-INF/lib/"/>

    <jar jarfile="${leis-dir}/JARS/APP-INF/lib/LEISConfig.jar">
        <fileset dir="LEIS/" includes="datetime.properties"/>
        <fileset dir="LEIS/" includes="log4j.properties"/>
        <manifest>
            <attribute name="Built-By" value="${user.name}"/>
        </manifest>
    </jar>
</target>


<!--======================================================================== …
Run Code Online (Sandbox Code Playgroud)

ant gradle

14
推荐指数
2
解决办法
2万
查看次数

Grails自定义错误消息的问题

我目前正在尝试在grails中为默认约束指定自定义错误消息,但到目前为止我所有回来的都是默认错误消息.

我知道我必须编辑grails-app/i18n/messages.properties文件

如果我更改以下默认错误代码消息,它将正确显示新的错误消息

default.blank.message=Property [{0}] of class [{1}] cannot be blank
Run Code Online (Sandbox Code Playgroud)

但是,这不是我想要做的.我需要更细粒度的错误报告,并且有多个字段可以为空白等.我希望能够做的是,为类中的每个字段显示自定义消息

package com.mycompany.myapp

class Test{

 String name
 def constraints = {
 name(nullable:false, blank:false)
 }
}
Run Code Online (Sandbox Code Playgroud)

(以下代码附加到messages.properties的末尾)

test.name.blank=Name cannot be blank
test.name.nullable=Name cannot be nullable
Run Code Online (Sandbox Code Playgroud)

根据grails文档,这应该可以正常工作,无论是否包名 - className.propertyName.blank

grails.org/doc/latest/(约束部分)&(第7.4节 - 验证和国际化)

我已经尝试了所有可以想到的组合,但它总是显示自定义消息

我也尝试过安装grails i18n模板插件

http://www.grails.org/I18n+Templates+Plugin

它会自动为我生成错误代码.我将新的错误代码附加到现有messages.properties文件的末尾,但我仍然收到默认的错误消息.

但是,插件生成的错误代码有所不同.

而不是grails doc - test.name.null = ......中指定的格式,它自动生成test.name.null.error =自定义消息

我还尝试完全删除默认错误消息,但仍然显示它们

如果有人以前遇到过这个问题,我将不胜感激,任何人都可以给予我任何帮助

提前致谢

grails groovy grails-plugin grails-validation

13
推荐指数
2
解决办法
1万
查看次数

有没有办法知道grails项目中使用哪个groovy版本?

从grails项目中,我们可以知道使用哪个grails版本.就像我可以获得groovy版本?

grails groovy

13
推荐指数
1
解决办法
7437
查看次数

Eclipse中的Grails 3.0.1添加显示错误指定的目录似乎不是Grails安装

当我尝试在Eclipse中安装/导入Grails 3.0.1时,我收到错误消息"指定的目录似乎不是Grails安装".

我已经安装了Groovy Compiler 2.4.3.但仍然得到相同的错误消息.

我如何在Eclipse 4.4中安装Grails 3.0.1?

eclipse grails ggts

13
推荐指数
2
解决办法
7524
查看次数

GORM级联保存取决于字段名称?真?

我有以下安排的课程:

class A {
    static belongsTo = [c: C]
    B b
}

class B {
    static belongsTo = [c: C]
}


class C {
    static hasMany = [bbs: B, aas: A]
}
Run Code Online (Sandbox Code Playgroud)

如果我现在创建这些类的实例...

B b = new B()
A a = new A()
a.b = b

C c = new C()
c.addToBbs(b)
c.addToAas(a)
Run Code Online (Sandbox Code Playgroud)

...并尝试保存c ...

c.save()
Run Code Online (Sandbox Code Playgroud)

......我得到了org.hibernate.TransientObjectException Message object references an unsaved transient instance - save the transient instance before flushing: B.

我认为GORM所做的是首先将保存级联c.aas,然后它会绊倒a.b尚未保存的实例.因此例外.

现在 …

grails hibernate cascade grails-orm

12
推荐指数
1
解决办法
166
查看次数

Grails g:each,使用fieldvalue或直接访问差异

<g:each in="${business}" status="i" var="businessInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even' }">
<td>${fieldValue(bean: businessInstance, field: "id") }</td>
<td>${businessInstance.id}</td>
</tr>
</g:each>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,第一和第二表数据都得到相同的值.这两个案件有什么不同吗?

grails gsp

11
推荐指数
1
解决办法
1238
查看次数

Grails sql查询

想象一下,我有这样的事情:

def example = {
   def temp = ConferenceUser.findAllByUser(User.get(session.user))
   [temp: temp]
}
Run Code Online (Sandbox Code Playgroud)

解释我的问题:虽然动态查找器非常易于使用和快速学习,但我必须替换我的网站的动态查找器以进行SQL查询,因为这是一项要求.由于我不太了解SQL,我的主要问题是:

a)我正在使用一个SQLS数据库,配置好驱动程序和数据源,我的网站就像现在一样工作.如果我想为sql语句替换"findAllByUser",我应该这样做:

def dataSource
...
def db = new Sql(dataSource)
def temp = db.rows("SELECT ... ")
Run Code Online (Sandbox Code Playgroud)

b)这会有效吗?我的意思是,如果我使用"findAllByUser",临时对象将是一个列表,我是否需要打开与数据库的连接=?

sql grails

10
推荐指数
2
解决办法
4万
查看次数

如何用css将页脚放在底部(但不固定或粘贴!)

当页面信息不足时,脚和页脚导航栏之间有一个等待空间:

在此输入图像描述

是否有可能告诉css将页脚放在脚下去除那个空白区域?

css

10
推荐指数
0
解决办法
2万
查看次数