weixin_慕神0186092
这个token的时间是设置的多少呢
学习学习我爱学习啊
在project Structure --> Modules -->对应项目的Sources栏目的 resouces文件指定到Resources下面即可扫描得到
慕慕5176703
用户进行认证去查询方法 jdbcRealm.setAuthenticationQuery(userSql);
用户进行角色授权去查询方法 jdbcRealm.setUserRolesQuery(roleSql);
qq_雨巷無香_lryEHS
守到黎明
等待启动完成
qq_Ilove英雄_0
没有影响,用idea打出来就有,eclipse没有这个功能,就是提示作用,要不要无所谓的
慕婉清4012229
慕村4207870
navicate连接数据库就可以改啊,你那应该也可以改吧???、试试重命名
慕仔8316378
这么简单的SQL语句还要伸手?
qq_轶默存_0
user与role是n:n的关系,那么一定会有一张user_role中间表,存放user与role的对应关系。
莫槑
你们谁有老师的数据库啊,能发一份?
莫槑
需要的
qq_随风而扬_amFJNP
好像是mysql的URL时区配置问题,URL后添加:
?serverTimezone=GMT%2B8
试试?
慕仔0092249
这个有一点点开发经验就可以自己写出来了,视频里的表的对应关系都有
-- auto-generated definition
CREATE TABLE users
(
id INT AUTO_INCREMENT
PRIMARY KEY,
username VARCHAR(64) NULL,
password VARCHAR(32) NULL
);
-- auto-generated definition
CREATE TABLE user_roles
(
id INT AUTO_INCREMENT
PRIMARY KEY,
username VARCHAR(64) NULL,
role_name VARCHAR(32) NULL
);
-- auto-generated definition
CREATE TABLE test_user_role
(
user_name VARCHAR(64) NULL,
role_name VARCHAR(32) NULL
);
-- auto-generated definition
CREATE TABLE test_user
(
id INT AUTO_INCREMENT
PRIMARY KEY,
username VARCHAR(64) NULL,
password VARCHAR(32) NULL
);
-- auto-generated definition
CREATE TABLE test_role_permissions
(
id INT AUTO_INCREMENT
PRIMARY KEY,
role_name VARCHAR(64) NULL,
permission VARCHAR(64) NULL
);
-- auto-generated definition
CREATE TABLE roles_permissions
(
id INT AUTO_INCREMENT
PRIMARY KEY,
role_name VARCHAR(32) NULL,
permission VARCHAR(64) NULL
);
后生咱是无名鼠辈
你报的是什么错得先贴出来,单纯在数据库中加一个字段是不会影响到认证的!
幕布斯2518597
有截图吗?啥都没有 咋给你看?
jarWorker
数据库格式与编辑器编码格式设为一致
慕莱坞0295526
CustomRealm:
public class CustomRealm extends AuthorizingRealm {
Map<String, String> userMap = new HashMap<>(16);
{
userMap.put("Mark", "283538989cef48f3d7d8a1c1bdf2008f");
super.setName("customRealmName");
}
// 授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String userName= (String) principals.getPrimaryPrincipal();
// 从数据库或者缓存中获取数据
Set<String> roles=getRolesByUserName(userName);
Set<String> permission =getPermissionByUserName(userName);
SimpleAuthorizationInfo simpleAuthorizationInfo=new SimpleAuthorizationInfo();
simpleAuthorizationInfo.setStringPermissions(permission);
simpleAuthorizationInfo.setRoles(roles);
return simpleAuthorizationInfo;
}
// 认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// 从主体传过来的用户信息中获得用户名
String userName = (String) token.getPrincipal();
// 通过用户名到数据库中获取凭证
String password = getPasswordByUserName(userName);
if (password == null) {
return null;
}
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo("Mark",password,"customRealmName");
authenticationInfo.setCredentialsSalt(ByteSource.Util.bytes("Mark"));
return authenticationInfo;
}
/*模拟数据库查询凭证*/
private String getPasswordByUserName(String userName) {
return userMap.get(userName);
}
/*模拟数据库获取角色*/
private Set<String> getRolesByUserName(String userName) {
Set<String> sets=new HashSet<>();
sets.add("admin");
sets.add("user");
return sets;
}
/*模拟数据库获取权限*/
private Set<String> getPermissionByUserName(String userName) {
Set<String> sets=new HashSet<>();
sets.add("user:delete");
sets.add("user:add");
return sets;
}
// 计算加密之后的密文
public static void main(String[] args){
Md5Hash md5Hash=new Md5Hash("123456","Mark");//盐应为随机数,此处用“Mark”写死
System.out.println(md5Hash.toString());//通过控制台打印获得密文
}
}
慕前端7088294
验证失败会有异常。加个异常处理
慕粉2318317165
祝贺你,自己找到原因并解决,这是非常有成就感的一件事,而且也帮助自己更深理解问题所在,对于技术的提升也很有帮助
一位野生爸爸
你表里user_name字段中有一个叫Mark的用户吗?
SwordYu
忽然看到了和你的差距:我的什么注释都没写,你的写的一清二楚,我的学习方法不对啊
qq_K_121
你没有自己设置的话,jdbcRealm是会有默认的sql查询语句的,
托手筝
看源码他是通过roleName来获取的,而不是username
Sea_l
已解决 是jar版本问题 原先是5.1.26 改成5.1.46 就好了
qq_麻烦麻烦too_0
给你挨个试了一遍,可能性1:sql写错了。可能性2:jdbcRealm.setAuthenticationQuery(sql);没添加这句。
qq_不说话_1
datasource.setUrl("jdbc:mysql://localhost:3306/test");
datasource.setUsername("root");
datasource.setPassword("1234");
加一个驱动注册就行了
datasource.setDriverClassName("com.mysql.jdbc.Driver");
qq_不说话_1
datasource.setUrl("jdbc:mysql://localhost:3306/test");
datasource.setUsername("root");
datasource.setPassword("1234");
加一个驱动注册就行了
datasource.setDriverClassName("com.mysql.jdbc.Driver");
然后建一个表就行了
薛定谔的喵1
这是建好的表
森_12
https://www.cnblogs.com/ljy-20180122/p/9157912.html