我贡献的许多Web应用程序(主要是ASP.NET)需要处理多个不同的用户类型.
假设你有一个学校门户网站,学生和老师每天都会使用它.在应用程序的首页上,除了一些只有教师可以访问的工具的链接外,用户才会遇到几乎相同的GUI.假设这是一个消息传递工具.教师可以有不同的角色来定义教师可以发送给谁.
例如:
Publisher允许具有该角色的教师发送给学校中的每个人.我经常遇到的问题是,if当在整个应用程序中处理不同的用户类型时,我的代码总是变得混乱了-statements.不仅因为用户类型不同,而且还有不同的业务规则.我觉得我找不到任何方法来正确处理不同的用户类型.
我想ASP.NET中的角色概念解决了这个问题,但你仍然会if在应用程序周围找到-statements.
我的问题是:在没有使用if-statements 感染代码的情况下,是否有关于如何处理应用程序中的不同用户/用户类型的最佳实践?
我想用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吗?这甚至是正确的方法吗?有没有更好的方法来做到这一点?
我想使用带有href的anchor-tag链接Menu.cshtml页面,这样每当我点击导航栏中的菜单链接时,它应该指向Menu.cshtml.我已经尝试了几次使用此代码,但我无法做到这一点.这是我正在使用的代码:
<a class="page-scroll" href="~/Views/Home/Menu.cshtml">Menus</a>
Run Code Online (Sandbox Code Playgroud) 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 可能将两个着色器解释为一个着色器。
我最近添加了在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
asp.net ×2
c# ×2
asp.net-core ×1
c++ ×1
gatsby ×1
href ×1
identity ×1
opengl ×1
razor ×1
static-files ×1
windows-10 ×1