Spring security 4自定义jdbc身份验证

时间:2016-03-07 06:46:36

标签: spring-mvc spring-security spring-jdbc

我正在使用spring boot,spring mvc 4,spring security 4和mysql作为我的新网页应用程序的数据存储,我有两个问题

  1. 我之前从未使用过Spring安全性,但在看到之后,我对用于查找用户权限的查询有疑问:为什么它使用用户名而不是用户ID。我的意思是基于用户ID搜索权限要快得多,并且能够在将来更改用户名。我试图重载usersByUsernameQuery和authoritiesByUsernameQuery,但是要使用用户ID,但它不起作用(即使它工作,方法的名称也在困扰我)..所以请有人向我解释他们为什么使用用户名

  2. 在我之前使用过的php网络应用程序中,如果我们想使用BCrypt,我们过去常常将数据库中的salt与密码一起存储..但我注意到不需要这个列在Spring中..加密的盐部分也是如此,Spring内部知道如何使用它,所以我不应该担心迭代次数,成本和盐存储?

1 个答案:

答案 0 :(得分:0)

1)我不明白这个问题,因为如果你必须找到一个名为" Quentin"的用户的权限,你怎么知道" Quentin" ?

请查看我用于在登录时检索用户的查询

public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

private Spinner spinner;
private static final String[] sports = {
        "Hockey","Cricket","Football","Basketball","Badminton","Tennis"
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spinner);

    spinner = (Spinner)findViewById(R.id.spinner);
    ArrayAdapter<String> adapter;
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item,sports);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String item = parent.getItemAtPosition(position).toString();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}

2)盐与密码一起保存。关于如何做到这一点有一个惊人的解释here

相关问题