小编Fel*_*lix的帖子

Spring Security:自定义用户详细信息

我是Java和Spring 3的新手(过去8年主要使用PHP).我已经获得了spring security 3来使用所有默认的userDetails和userDetailsS​​ervice,我知道我可以使用以下命令访问控制器中登录用户的用户名:

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName(); //get logged in username
Run Code Online (Sandbox Code Playgroud)

但有两个问题我无法弄清楚:

  1. 当用户登录时,我希望存储许多其他用户详细信息(例如DOB,性别等),并且稍后可以通过控制器访问.我需要做什么才能创建的userDetails对象包含我的自定义字段?

  2. 我已经调用了"HttpSession session = request.getSession(true);" 在我的控制器中的每个方法的顶部.是否可以在登录时将登录用户的userDetails存储在会话中,这样我就不需要再调用"Authentication auth = SecurityContextHolder.getContext().getAuthentication();" 在每个方法的开头?

安全applicationContext.xml中:

<global-method-security secured-annotations="enabled"></global-method-security>     
<http auto-config='true' access-denied-page="/access-denied.html">
    <!-- NO RESTRICTIONS -->        
    <intercept-url pattern="/login.html" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/*.html" access="IS_AUTHENTICATED_ANONYMOUSLY"  /> 
    <!-- RESTRICTED PAGES -->
    <intercept-url pattern="/admin/*.html" access="ROLE_ADMIN" />
    <intercept-url pattern="/member/*.html" access="ROLE_ADMIN, ROLE_STAFF" />

    <form-login login-page="/login.html"
                login-processing-url="/loginProcess"
                authentication-failure-url="/login.html?login_error=1"
                default-target-url="/member/home.html" />
    <logout logout-success-url="/login.html"/>
</http>

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="SELECT U.username, UR.authority, U.userid FROM users U, userroles UR …
Run Code Online (Sandbox Code Playgroud)

spring spring-security

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

Spring注释验证 - 检查更新与添加的唯一性

我有一个名为sport的POJO,其属性为sportID,sportName,玩家数量.使用带注释的验证我编写了自己的注释约束来检查数据库中是否存在sportName.它在尝试添加sportName时效果很好,但是如果我尝试在不更改sportName的情况下更新玩家,则验证也会失败.

有没有办法在带注释的验证中传递参数?例如,我想将sportID传递给sportName约束检查,以便我可以在db查询中排除该ID.

或者有更好的方法吗?在我的控制器中,我应该让Spring验证输入(使用@Valid)然后如果没有错误,请调用验证函数来检查业务规则?

validation spring

8
推荐指数
1
解决办法
3687
查看次数

在ngOnInit async上调用函数?

如果我称之为ngOnInit(),使可观察到的调用来获取数据的功能,是ngOnInit的this.getSomething()调用还是异步或不ngOnInit等到this.getSomething()返回一个结果?基本上"doSomethingElse"在this.getSomething()完成之前或之后在ngOnInit()中执行了吗?

ngOnInit() {
    this.getSomething();
    doSomethingElse;
}

getSomething() {
    this.someService.getData()
        .subscribe(
            result => {
                this.result = result;
            },
    error => this.errorMessage = <any>error);
}
Run Code Online (Sandbox Code Playgroud)

asynchronous ngoninit angular

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

Laravel Raw DB插入受影响的行

我在laravel 4中使用原始查询有没有办法检查插入内容上的受影响行? DB::getPdo()->rowCount();给我一个"undefined method" error。代码如下:

$query = "INSERT IGNORE INTO table (id) VALUES (?)";
$doQuery = DB::insert($query, array($value));
if ($doQuery) {
    return DB::getPdo()->last();
} else {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果不是,是否有一种简便的方法可以确定是否完成插入而不进行两次查询?

php mysql pdo laravel-4

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