小编And*_*aas的帖子

处理应用程序中的不同用户类型

我贡献的许多Web应用程序(主要是ASP.NET)需要处理多个不同的用户类型.

假设你有一个学校门户网站,学生和老师每天都会使用它.在应用程序的首页上,除了一些只有教师可以访问的工具的链接外,用户才会遇到几乎相同的GUI.假设这是一个消息传递工具.教师可以有不同的角色来定义教师可以发送给谁.

例如:

  • Publisher允许具有该角色的教师发送给学校中的每个人.
  • 没有额外角色的教师只能发送给他/她班级中的每个人.
  • 将来,家长也可以访问此门户网站并查看有关其子女的详细信息.

我经常遇到的问题是,if当在整个应用程序中处理不同的用户类型时,我的代码总是变得混乱了-statements.不仅因为用户类型不同,而且还有不同的业务规则.我觉得我找不到任何方法来正确处理不同的用户类型.

我想ASP.NET中的角色概念解决了这个问题,但你仍然会if在应用程序周围找到-statements.

我的问题是:在没有使用if-statements 感染代码的情况下,是否有关于如何处理应用程序中的不同用户/用户类型的最佳实践?

c# asp.net identity

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

在Google身份验证后面提供静态文件

我想用Gatsby创建一个静态生成的站点.这一切都很好,但我希望有适当的身份验证和授权,因为这是一个内部网站 - 它只能由我公司的人员访问.我想到了这一点,如果没有一些服务器组件,在没有某种后端的情况下安全地验证用户是不可能的(?).我以为我可以使用ASP.NET Core来提供静态文件,并在这些静态文件前面进行Google(for Work)身份验证和授权.

看起来StaticFileHandler 它不支持设计授权,因为它只负责提供可公开访问的静态文件.我设法通过使用Authorize我的root操作上的属性(听取'/')来获得Google身份验证,并且具有发布的登录操作,Challenge并且用户将被重定向到Google进行身份验证.进一步阅读处理静态文件的文档说:

静态文件模块不提供授权检查.它提供的任何文件,包括wwwroot下的文件都是公开的.根据授权提供文件:

  • 将它们存储在wwwroot之外以及静态文件中间件可访问的任何目录中
  • 通过控制器操作提供服务,返回应用授权的FileResult

所以现在我Index对我的动作HomeController看起来像这样:

[Authorize]
public IActionResult Index()
{
    // TODO: Return static files based on incoming requested path.
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案不是很满意.我应该使用中间件而不是使用MVC吗?这甚至是正确的方法吗?有没有更好的方法来做到这一点?

static-files asp.net-core-mvc asp.net-core gatsby

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

如何在mvc4中使用href链接cshtml页面

我想使用带有href的anchor-tag链接Menu.cshtml页面,这样每当我点击导航栏中的菜单链接时,它应该指向Menu.cshtml.我已经尝试了几次使用此代码,但我无法做到这一点.这是我正在使用的代码:

<a class="page-scroll" href="~/Views/Home/Menu.cshtml">Menus</a>
Run Code Online (Sandbox Code Playgroud)

c# asp.net href razor asp.net-mvc-4

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

如何使用 glCreateShaderProgram?

http://docs.gl/gl4/glCreateShaderProgram

伪代码:

const GLuint shader = glCreateShader(type);
if (shader) {
    glShaderSource(shader, count, strings, NULL);
    glCompileShader(shader);
    const GLuint program = glCreateProgram();
    if (program) {
        GLint compiled = GL_FALSE;
        glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
        glProgramParameteri(program, GL_PROGRAM_SEPARABLE, GL_TRUE);
        if (compiled) {
            glAttachShader(program, shader);
            glLinkProgram(program);
            glDetachShader(program, shader);
        }
        /* append-shader-info-log-to-program-info-log */
    }
    glDeleteShader(shader);
    return program;
}
else {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不知道可以一次编译多个着色器。我遇到的问题是文档没有告诉我如何调用它。

如果我想编译一个顶点 + 片段着色器,我应该指定什么类型?最初我尝试过,glCreateShader(GL_VERTEX_SHADER | GL_FRAGMENT_SHADER);但后来它抱怨了两个main功能。OpenGL 可能将两个着色器解释为一个着色器。

c++ opengl

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

继续Visual Studio 2015安装功能

我最近添加了在Visual Studio 2015中为Windows 10创建通用应用程序所需的组件.但是,我没有时间完成安装.安装成功取消了,我收到了这样的消息:'52 58个组件已成功安装.'.

我没有得到任何关于如何继续这个过程的信息.有没有办法继续安装?我试过在Visual Studio 2015中四处寻找,我找不到任何可以做到这一点的地方.我也尝试再次下载模拟器,因为那是没有完成的模拟器.然后我收到一条消息,说我需要卸载已经安装的Windows 10仿真器版本.

当我尝试选择"Universal"时,通过Visual Studio触发原始安装.它没有任何可用的模板,并表示需要安装SDK.然后我遇到了甜蜜的复选框GUI(看起来就像这样),我选择安装什么.

有没有办法回到这个GUI,或者,是否有任何方式继续这个安装?

visual-studio win-universal-app windows-10 visual-studio-2015

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