Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring mvc中不同类的角色_Java_Spring_Spring Mvc_Spring Boot - Fatal编程技术网

Java spring mvc中不同类的角色

Java spring mvc中不同类的角色,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,如果我有一个超类用户,而类学生和讲师扩展了这个类,那么在springBoot应用程序中使用角色(即为了安全)的最佳方式是什么 我觉得这几乎没有必要,因为反正我有两个类?反正我会添加安全角色 处理每个请求时不必使用此类。而经过身份验证的用户将在会话令牌中“隐藏”其角色 我不确定您是否只能处理两个用户类的安全问题 那么没有经过身份验证的用户呢?无论如何,我都会添加安全角色 处理每个请求时不必使用此类。而经过身份验证的用户将在会话令牌中“隐藏”其角色 我不确定您是否只能处理两个用户类的安全问题 那么未

如果我有一个超类
用户
,而类
学生
讲师
扩展了这个类,那么在
springBoot
应用程序中使用角色(即为了安全)的最佳方式是什么


我觉得这几乎没有必要,因为反正我有两个类?

反正我会添加安全角色

处理每个请求时不必使用此类。而经过身份验证的用户将在会话令牌中“隐藏”其角色

我不确定您是否只能处理两个用户类的安全问题


那么没有经过身份验证的用户呢?

无论如何,我都会添加安全角色

处理每个请求时不必使用此类。而经过身份验证的用户将在会话令牌中“隐藏”其角色

我不确定您是否只能处理两个用户类的安全问题


那么未经身份验证的用户呢?

使用类类型作为角色不是一个很好的主意,因为它不灵活。假设您创建了一个名为
学生的用户
,并将其保存到名为
学生
的数据库表中。如果以后要将此用户的角色更改为讲师,则必须将所有用户数据迁移到新表中

我经常看到的一种常用方法是使用一个中间类(表),其中包含所有可用的角色。然后,每个用户都有一个角色列表(或只有一个角色)。通过这种方式,您可以轻松更改应用于不同用户的角色

例如,假设您有一个基本角色类:

class Role {

    String name;

    // Getters and setters...
}
然后,您的学生和讲师课程将如下所示:

abstract class User {

    List<Role> roles;

    // Easy way to check if a user has a role (better approach would be to use a Set).
    boolean hasRole(String name) {
        for (Role r : roles) {
            if (name.equals(r.getName())) 
                return true
        }
        return false
    }
}

class Lecturer extends User {
}

class Student extends User {
}
抽象类用户{
列出角色;
//检查用户是否有角色的简单方法(更好的方法是使用集合)。
布尔hasRole(字符串名称){
for(角色r:角色){
if(name.equals(r.getName()))
返回真值
}
返回错误
}
}
课堂讲师扩展用户{
}
班级学生扩展用户{
}
这种类型的角色结构有一个明显的好处——为数据库中的用户更改角色非常容易

您还可以创建多个小角色。例如,
讲师
可以拥有角色
创建
,等等,这将授予他对您的应用程序的所有权限。而学生可能只有
read
角色


我还建议您检查是否计划对应用程序实施某种身份验证(它也遵循我所描述的类似角色方法)。

使用类类型作为角色不是一个很好的主意,因为它不灵活。假设您创建了一个名为
学生的用户
,并将其保存到名为
学生
的数据库表中。如果以后要将此用户的角色更改为讲师,则必须将所有用户数据迁移到新表中

我经常看到的一种常用方法是使用一个中间类(表),其中包含所有可用的角色。然后,每个用户都有一个角色列表(或只有一个角色)。通过这种方式,您可以轻松更改应用于不同用户的角色

例如,假设您有一个基本角色类:

class Role {

    String name;

    // Getters and setters...
}
然后,您的学生和讲师课程将如下所示:

abstract class User {

    List<Role> roles;

    // Easy way to check if a user has a role (better approach would be to use a Set).
    boolean hasRole(String name) {
        for (Role r : roles) {
            if (name.equals(r.getName())) 
                return true
        }
        return false
    }
}

class Lecturer extends User {
}

class Student extends User {
}
抽象类用户{
列出角色;
//检查用户是否有角色的简单方法(更好的方法是使用集合)。
布尔hasRole(字符串名称){
for(角色r:角色){
if(name.equals(r.getName()))
返回真值
}
返回错误
}
}
课堂讲师扩展用户{
}
班级学生扩展用户{
}
这种类型的角色结构有一个明显的好处——为数据库中的用户更改角色非常容易

您还可以创建多个小角色。例如,
讲师
可以拥有角色
创建
,等等,这将授予他对您的应用程序的所有权限。而学生可能只有
read
角色


我还建议您检查是否计划对您的应用程序实施某种身份验证(它也遵循我所描述的类似的角色方法)。

如果您想在
spring boot
应用程序中实现安全性,您可以使用
spring securtiy
来处理角色并使您更轻松,您还可以创建自己的
成功处理程序
失败处理程序
类:

首先,在
依赖项下的
pom.xml
中添加这些行

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
在定义配置类和数据源之后,您需要定义
\login
,因此您必须通过如下方式来解析路径

 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;


@Configuration
public class WebMVCconfig extends WebMvcConfigurerAdapter {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");

  }
}
viewName
是您要创建的自定义登录名,它必须位于
src/main/resources/templates/

欲了解更多信息,请使用以下链接
,以及spring security官方文档

如果您想在
spring boot
应用程序中实现安全性,您可以使用
spring securtiy
来处理角色并使其更简单,您还可以创建自己的
成功处理程序
失败处理程序
类:

首先,在
依赖项下的
pom.xml
中添加这些行

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
在定义配置类和数据源之后,您需要定义
\login
,因此您必须通过如下方式来解析路径

 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;


@Configuration
public class WebMVCconfig extends WebMvcConfigurerAdapter {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");

  }
}
viewName
是您要创建的自定义登录名,它必须位于
src/main/resources/templates/

欲了解更多信息,请使用以下链接 ,以及spring安全官方文档