我正在使用spring boot,spring mvc 4,spring security 4和mysql作为我的新网页应用程序的数据存储,我有两个问题
我之前从未使用过Spring安全性,但在看到之后,我对用于查找用户权限的查询有疑问:为什么它使用用户名而不是用户ID。我的意思是基于用户ID搜索权限要快得多,并且能够在将来更改用户名。我试图重载usersByUsernameQuery和authoritiesByUsernameQuery,但是要使用用户ID,但它不起作用(即使它工作,方法的名称也在困扰我)..所以请有人向我解释他们为什么使用用户名
在我之前使用过的php网络应用程序中,如果我们想使用BCrypt,我们过去常常将数据库中的salt与密码一起存储..但我注意到不需要这个列在Spring中..加密的盐部分也是如此,Spring内部知道如何使用它,所以我不应该担心迭代次数,成本和盐存储?
答案 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