mod-env 相关问题


Django - Oracle Cloud Bucket 与 django-storages 集成

我已将 django-storages 配置为指向 OCI 存储桶。下面是配置: AWS_S3_ACCESS_KEY_ID = env('AWS_BUCKET_KEY') AWS_SECRET_ACCESS_KEY = env('AWS_BUCKET_SECRET')


射频接收器(433 mhz)可以在没有像arduino UNO、NANO、ESP8266等微控制器的情况下接收射频......?

我已经使用 ESP8266 MOD 设备成功控制 LED 灯泡。不过,我现在的目标是无线控制 LED 灯泡。我的计划是使用连接到 ESP8266 MOD 的 RF 发射器和...


如何将 .env 文件放入 GitHub?

在大多数情况下,Python 的 .env 文件位于 .gitignore 目录中。然而,将 .env 文件放在我的私人存储库中对我来说至关重要。我需要能够将其 git pull 到我的本地机器...


将 appsettings.{env}.json 合并到 .NET Core 3.1 中的 appsettings.json

我了解 .NET Core 3.1 中的默认行为是,当您发布解决方案时,它会将所有 appsettings.{env}.json 文件复制到最终包中,这取决于您的环境...


如何防止github copilot读取.env文件?

我正在使用 PyCharm 和 GitHub Copilot,并希望阻止 Copilot 使用 api 令牌读取 .env 文件。 我注意到有一个选项可以“禁用文本伙伴的完成”。不过,我是


将补丁一分为二(最好是在 Vim 中)

我有一个补丁,我想将其分成两个补丁。我需要以每行粒度分割补丁——我不能只是将块分割成两个单独的文件。 我可以使用 Emacs diff mod...


如何在生产环境中通过“.env”文件传递环境文件.env?

我目前正在使用 Python Flask。我试图更好地理解环境变量的配置。我知道如何在开发时将环境变量传递给我的代码


使用 ReverseProxy + ModSecurity 在 Apache 中进行虚拟主机配置

我已经在apache2中使用反向代理+Mod安全设置了虚拟主机配置。 但它重叠,重新启动 apache2 时不会给出任何错误,但第二个 虚拟主机配置是


如何在 VS Code 中从 GitHub Copilot 中排除特定文件(如 .env)?

我目前正在 Visual Studio Code 中使用 GitHub Copilot,并试图找到一种方法来阻止 Copilot 访问某些文件类型,特别是 .env 文件,其中包含敏感信息...


如何将整数(解)列表转换为连续区间列表

我使用CLP(FD)和SWI-Prolog编写了一个CSP程序。 有些约束看起来像 Xi mod N #= 0,所以我必须为每个变量 Xi 调用 res(Xi,Li) (使用 res(X,L) :- setof(X, indomain(X), L))。 ..


有没有一个函数可以获取 Windows 上文件的真实且区分大小写的路径?

我正在为游戏创建 std::filesystem Lua 绑定,并且我想确保稍后使用该绑定的 mod 不依赖于 Windows 的大小写不敏感。 例如,fopen("foo.txt&


Visual Studio Code 中的 Git 嵌套存储库

在一个改装项目中,我有一个包含我所有东西的顶级存储库。然后有一个我分叉的脚本包的嵌套存储库。因为它是独立的,所以我想将它与我的 mod pro 分开......


WPF:为什么绑定模式OneWay没有调用回调函数?

我创建了一个带有一些属性的自定义控件,所有这些似乎都正常工作。 但经过一些测试,我发现了一种我不明白的奇怪行为。当我在 OneWay mod 中绑定属性时...


通过线性探测实现调整哈希表大小的时间复杂度

我已经阅读了一些文章,但仍然不清楚这个问题的答案。 假设我是否需要调整通过线性探测实现的哈希表的大小(即 h(x) = ((hash(x) mod 哈希表容量) + 1)


什么是.mamba_trash以及如何删除它?

在我删除 micromamba 环境后 micromamba env 删除 -n 我跑 micromamba 环境列表 它显示了一个称为“环境”的 .mamba_trash ...


如何在 pyproject.toml 中指定 setuptools 入口点

我有一个像这样的setup.py: #!/usr/bin/env python 从 setuptools 导入安装程序,find_packages 设置( 名称=“我的项目”, package_dir={"": "src"}, 包裹=


如何在windows中设置env变量?

我遵循了本教程。 https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html 但不幸的是,它似乎不起作用。 (payo-py3.10) PS C:\Users\ser> 设置 MY_VAR=a...


pyarrow 飞行错误:无法在关闭前完成写入

我有以下代码,用于使用 pyarrow 飞行在 Dremio 中执行查询: DremioConnector 类: 环境:str auth_token:str def __init__(self, env: str, auth_token: str): ...


docker 的 django-environ 和 Postgres 环境

我正在为我的 Django 项目使用 django-environ 包。 我在 .env 文件中提供了数据库 URL,如下所示: DATABASE_URL=psql://dbuser:dbpassword@dbhost:dbport/dbname 我的数据库设置在


如何使用 Docker 在 Ubuntu 上安装 nvm?

到目前为止我有这个: 来自 --platform=linux/amd64 amd64/ubuntu:noble 环境术语 Linux ENV DEBIAN_FRONTEND 非交互式 SHELL [“/bin/bash”,“-c”] 环境外壳 /bin/bash 运行 apt upd...


如何在 laravel 10 中设置子域

我正在尝试在我的项目中设置一个子域,但由于某种原因它不起作用。 路由::domain('{用户名}.' .env('APP_URL'))->group(function () { 返回“测试”; }); 它我...


Python:load_pem_private_key 无法识别生产中的我的私钥

在本地,我有一个 .env 文件,其中包含单行 RSA 密钥,如下所示: PRIVATE_KEY="-----开始 RSA 私钥----- 密钥内容 -----结束 RSA 私钥----- ” 每 64 个字符


如何从字符串值设置(Django)celerybeat cron 计划

我正在使用 Django 和 celerybeat。我想通过 env var (cron 的字符串值)配置 cron 计划。 我们目前正在使用 celery.schedules 设置这样的 cron 计划。


如何录制和保存健身房环境视频

我已经训练了一个 DQN 代理,我想使用gym.wrappers.RecordVideo 录制并保存单集的视频。到目前为止,这是我的代码: 从gym.wrappers导入RecordVideo env =gym.make(“


ML.net - CreateTimeSeriesEngine

我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 列表 我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 List<RateData> infoList = new List<RateData>(); // populate list infoList = FileParser(infoList); IDataView data = mlContext.Data.LoadFromEnumerable<RateData>(infoList); 我设法像这样运行预测估计器 var forecastEstimator = mlContext.Forecasting.ForecastBySsa( outputColumnName: nameof(RatePrediction.CurrentRate), inputColumnName: nameof(RateData.HistoricalRate), windowSize: 14, seriesLength: numRateDataPoints, trainSize: numRateDataPoints, horizon: 1, confidenceLevel: 0.95f ); SsaForecastingTransformer forecaster = forecastEstimator.Fit(RateDataSeries); 然后我尝试创建这样的预测引擎 var ForecastEngine = Forecaster.CreateTimeSeriesEngine(mlContext); 这里我遇到了一些错误。 我的输入和输出类如下: public class RateData { public DateTime TransactionDate { get; set; } public float HistoricalRate { get; set; } } public class RatePrediction { public float CurrentRate; } 我有这样的错误 System.InvalidOperationException: Can't bind the IDataView column 'CurrentRate' of type 'Vector<Single, 1>' to field or property 'CurrentRate' of type 'System.Single'. at Microsoft.ML.Data.TypedCursorable`1..ctor(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, InternalSchemaDefinition schemaDefn) at Microsoft.ML.Data.TypedCursorable`1.Create(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, SchemaDefinition schemaDefinition) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2.PredictionEngineCore(IHostEnvironment env, InputRow`1 inputRow, IRowToRowMapper mapper, Boolean ignoreMissingColumns, SchemaDefinition outputSchemaDefinition, Action& disposer, IRowReadableAs`1& outputRow) at Microsoft.ML.PredictionEngineBase`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition, Boolean ownsTransformer) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at Microsoft.ML.Transforms.TimeSeries.PredictionFunctionExtensions.CreateTimeSeriesEngine[TSrc,TDst](ITransformer transformer, IHostEnvironment env, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at USD_EURO_Conversion_rate.TimeSeriesModelHelper.FitAndSaveModel(MLContext mlContext, IDataView RateDataSeries, String outputModelPath) 预测类中的属性需要是float[]类型;向量/数组而不是单个值,例如 public class RatePrediction { public float[] CurrentRate; } 类似于此处的Microsoft 示例。


导入错误:无法从“jinja2”导入名称“escape”。运行 docker compose up 时出现错误

我分别有以下 Dockerfile 和 docker-compose: Dockerfile: 来自Python:3.9 ENV Python 无缓冲 1 工作目录/应用程序 复制requirements.txt /app/requirements.txt 运行 pip install -r


我尝试在cmd中执行Java程序,但使用“java”运行程序时出现错误

我可以在VS code中成功运行程序: 在 VS Code 中运行 命令: /usr/bin/env /usr/lib/jvm/java-17-openjdk-amd64/bin/java -XX:+ShowCodeDetailsInExceptionMessages -cp /home/bignosecss/.vscode-...


如何通过 GHCup+cabal 管理 XMonad(以及 xmobar 和其他相关内容)?

事实证明执行起来就足够了 cabal install --package-env=$HOME/.config/xmonad --lib 基础 xmonad xmonad-contrib 但我不明白的是: 为什么这有效? 为什么要更新...


运行特定测试时未找到 Cargo `OUT_DIR` env var

有人可以帮助我理解这一点吗? 我有一个 Rust 项目,有一个 lib 板条箱:my_crate_2。这是它的文件结构: 我的项目/ ├── Cargo.toml └── 源文件/ └── main.rs 我的箱子2/ ├──...


将 Laravel 的 .env 文件复制到 Docker 容器中

设置 我正在 Ubuntu 服务器上运行 Docker,并尝试创建一个 Laravel 容器来使用 artisan 运行我的网站。 Laravel 项目位于 GitHub 存储库内,我将该项目克隆到...


shell 文件中的两个源命令不会更新第二次发送到源的参数

第一个文件(trigger.sh): #!/usr/bin/env bash echo“配置测试” 回显“来源1” 来源./run-1.sh -m“乔治” 回显“来源2” 来源./run-1.sh -m &q...


如何在 TCL/TK 中将标签向左对齐并允许调整大小

我想垂直堆叠一组标签,并且希望它们左对齐。 我已经尝试过这个: #!/usr/bin/env tclsh 包需要 Tk # 初始化全局计数器 设置 widgetCount...


环境变量 CORS_ALLOW_ORIGIN 带有简单与双美元符号

在 .env 文件中,我必须将变量 CORS_ALLOW_ORIGIN 设置为 ^https?://(.*)(:[0-9]+)?$$,并带有双美元符号。团队中的所有其他开发人员似乎都对最后的单个 $ 感到满意......


如何让 React 应用程序使用 Docker 容器中的环境变量?

我有一个 React 应用程序,它使用 webpack.config.js 中指定的环境变量。问题是环境变量在构建期间被硬编码。如何使应用程序使用 env varia...


django 静态文件未提供给 HTML-EMail 模板

我正在 Win7 主机上的本地 Vagrant arch 机器上运行 Django。我在 .env 文件中从 Django 设置了环境变量。在我的应用程序中,所有静态文件都正确提供,并且一切正常......


如何清除 Laravel 8 中数据库设置的缓存?

我已在我的网络服务器上部署了我的项目。 .env 包含 Web 数据库的正确设置,但由于某种原因 Laravel 仍然尝试连接到本地主机。 问题是,如果我使用...


如何分割多个不同的字符,同时保留该字符,但又不在空白处?

尝试/失败地分割两个不同的字符,但也不分割空间。 #!/usr/bin/env perl 使用严格; 我的 $line = "-abc=123 +def=456 -ghi 789"; 我的@arr = split(/([+-]\S+)/,$line); 为我的$


为什么运行 Flask 开发服务器会自行运行两次?

我正在使用 Flask 开发网站,在开发过程中我使用以下文件运行 Flask: #!/usr/bin/env python 从日期时间导入日期时间 从应用程序导入应用程序 导入配置 如果__n...


如何在 React 组件的 Jest 测试中模拟 MUI5 Pro 许可证密钥

我目前正在将 MUI v5 Pro 组件集成到我的 React 库中,然后将这些库组件导入到我的主机应用程序中。我已经在两个 Libra 的 .env 文件中设置了 MUI 许可证密钥...


ESLint:解析错误:意外的标记:

大家好我正在将我的 vue3 项目从 js 迁移到 typescript,我遇到了这个问题: 这是我在 .vue 文件中的代码 const toto = (msg: string) => { </desc> <question vote="7"> <p>大家好,我正在将我的 vue3 项目从 js 迁移到 typescript,我遇到了这个问题:</p> <p><a href="https://i.stack.imgur.com/y5tG8.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL3k1dEc4LnBuZw==" alt=""/></a></p> <p>这是我在 .vue 文件中的代码</p> <pre><code>&lt;script setup lang=&#34;ts&#34;&gt; const toto = (msg: string) =&gt; { console.log(msg) } &lt;/script&gt; </code></pre> <p>这是我的 eslintrc.js</p> <pre><code>module.exports = { &#39;env&#39;: { &#39;browser&#39;: true, &#39;es2021&#39;: true }, &#39;extends&#39;: [ &#39;eslint:recommended&#39;, &#39;plugin:vue/vue3-essential&#39; ], &#39;parserOptions&#39;: { &#39;ecmaVersion&#39;: 13, &#39;sourceType&#39;: &#39;module&#39; }, &#39;plugins&#39;: [ &#39;vue&#39; ], &#39;rules&#39;: { &#39;vue/multi-word-component-names&#39;: &#39;off&#39;, &#39;vue/object-curly-spacing&#39;: [2, &#39;always&#39;], &#39;vue/html-closing-bracket-spacing&#39;: [2, { &#39;selfClosingTag&#39;: &#39;always&#39; }], &#39;vue/max-attributes-per-line&#39;: [2, { &#39;singleline&#39;: { &#39;max&#39;: 1 }, &#39;multiline&#39;: { &#39;max&#39;: 1 } }], &#39;semi&#39;: [2, &#39;never&#39;] } } </code></pre> </question> <answer tick="true" vote="10"> <p>您需要配置 eslint 以支持 typescript,因为 eslint 不支持开箱即用。 首先,您需要安装<a href="https://www.npmjs.com/package/@typescript-eslint/parser" rel="nofollow noreferrer">@typescript-eslint/parser</a>,然后安装<a href="https://www.npmjs.com/package/@typescript-eslint/eslint-plugin" rel="nofollow noreferrer">@typescript-eslint/eslint-plugin</a>。 安装完这些后,请按如下方式更新您的配置 - </p> <pre><code>module.exports = { &#39;env&#39;: { &#39;browser&#39;: true, &#39;es2021&#39;: true, node: true }, &#39;extends&#39;: [ &#39;eslint:recommended&#39;, &#39;plugin:vue/vue3-essential&#39; ], &#39;parserOptions&#39;: { &#39;ecmaVersion&#39;: 12, &#39;sourceType&#39;: &#39;module&#39;, parser: &#39;@typescript-eslint/parser&#39; }, &#39;plugins&#39;: [ &#39;vue&#39;, &#39;@typescript-eslint&#39; ], &#39;rules&#39;: { &#39;vue/multi-word-component-names&#39;: &#39;off&#39;, &#39;vue/object-curly-spacing&#39;: [2, &#39;always&#39;], &#39;vue/html-closing-bracket-spacing&#39;: [2, { &#39;selfClosingTag&#39;: &#39;always&#39; }], &#39;vue/max-attributes-per-line&#39;: [2, { &#39;singleline&#39;: { &#39;max&#39;: 1 }, &#39;multiline&#39;: { &#39;max&#39;: 1 } }], &#39;semi&#39;: [2, &#39;never&#39;] } } </code></pre> </answer> <answer tick="false" vote="1"> <p>就我而言,问题是我使用解析器选项作为数组,而不是字符串:</p> <pre><code> parserOptions: { - parser: [&#39;@typescript-eslint/parser&#39;], + parser: &#39;@typescript-eslint/parser&#39;, }, </code></pre> </answer> <answer tick="false" vote="0"> <p>如果你在项目中同时使用 JS 和 TS,此配置有帮助</p> <pre><code> overrides: [ { files: [&#39;*.vue&#39;], parser: &#39;svelte-eslint-parser&#39;, parserOptions: { parser: { // Specify a parser for each lang. ts: &#39;@typescript-eslint/parser&#39;, js: &#39;espree&#39;, typescript: &#39;@typescript-eslint/parser&#39; } } } ], </code></pre> </answer> <answer tick="false" vote="-1"> <p>我在节点 v12.22.9 上遇到了这个问题。通过升级到 v14.21.2,我不再遇到解析错误。您可以使用命令升级/安装</p> <pre><code>nvm install v14.21.2 </code></pre> </answer> </body></html>


在发布为 npm 包之前使用 npm 链接测试组件时出现重复的 ReactJS 导入问题

我有一个像这样的简单组件。 从'react'导入React,{useState}; 函数 MyComponentWithState(props) { const [值,setValue] = useState(0); 返回 ( 我的价值... 我有一个像这样的简单组件。 import React, {useState} from 'react'; function MyComponentWithState(props) { const [value, setValue] = useState(0); return ( <p>My value is: {value}</p> ) } export default MyComponentWithState; 我想将它作为单独的包发布在 NPM 上。因此,为此我准备了 package.json 和 webpack.config.js,如下所示。 package.json: { "name": "try-to-publish", "version": "0.0.1", "description": "Just a test", "main": "build/index.js", "scripts": { "start": "webpack --watch", "build": "webpack" }, "author": { "name": "Behnam Azimi" }, "license": "ISC", "peerDependencies": { "react": "16.9.0", "react-dom": "16.9.0" }, "dependencies": { "react": "16.9.0", "react-dom": "16.9.0", "prop-types": "15.7.2", "react-scripts": "3.1.1", "webpack": "4.39.3" }, "devDependencies": { "@babel/core": "7.6.0", "@babel/plugin-proposal-class-properties": "7.5.5", "@babel/preset-env": "7.6.0", "@babel/preset-react": "7.0.0", "babel-loader": "8.0.6", "babel-plugin-transform-object-rest-spread": "6.26.0", "babel-plugin-transform-react-jsx": "6.24.1", "css-loader": "3.2.0", "node-sass": "4.12.0", "sass-loader": "8.0.0", "style-loader": "1.0.0", "webpack-cli": "3.3.8", "webpack-external-react": "^1.1.2" } } webpack.config.json: const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'build'), filename: 'index.js', libraryTarget: 'commonjs2' }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, include: path.resolve(__dirname, 'src'), use: { loader: "babel-loader" } }, ] }, resolve: { alias: { 'react': path.resolve(__dirname, 'node_modules/react'), 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'), } }, externals: { 'react': "commonjs react", 'react-dom': "commonjs react-dom" }, }; 这是我的 .babelrc: { "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": ["@babel/plugin-proposal-class-properties"] } 当我将组件发布到 NPM 并使用 `npm install 将其安装到我的另一个 ReactJs 项目中时,这些配置就像魅力一样,但我的观点是本地测试! 我想在发布之前测试这个组件/库。为此,我使用 npm link 功能将我的组件与我的主 ReactJS 项目链接起来。 正如您在上面看到的,我的组件是功能性的,我也使用了钩子。因此,当我将本地链接的库注入到我的主 ReactJs 项目中时,会遇到此错误, 无效的挂钩调用。钩子只能在函数组件的主体内部调用。发生这种情况可能是由于以下原因之一: 1.您的React和渲染器版本可能不匹配(例如React DOM) 2. 你可能违反了 Hooks 规则 3. 您可能在同一个应用程序中拥有多个 React 副本 我的问题与第三个原因有关。我的项目使用 ReactJs 并导入一次,我的组件也会导入 React!我的意思是在一个项目中两次 React 导入!. 我的 Webpack 配置中还有关于 react 和 react-dom 的 externals 配置。 我应该怎么做才能解决这个问题?我的错误在哪里? 更新: 我也尝试过 @sung-m-kim 和 @eddie-cooro 所说的,但没有成功!意思是,我更改了 package.json 并从 react 中删除了 react-dom 和 dependencies 并将它们添加到 devDpendencies。 我终于通过这些步骤解决了这个问题。 运行npm链接里面 <your-library-package>/node_modules/react 还有 运行npm链接里面 <your-library-package>/node_modules/react-dom 然后在 应用程序根目录中运行 npm link react 和 npm link react-dom 并且不要忘记将 React 和 React-dom 作为库中的外部对象保留 // webpack.config.js const externals = { "react": "react", "react-dom": "react-dom", } module.exports = { . . . externals } 我解决了我的问题。我使用 RollupJS 而不是 Webpack 作为捆绑工具进行捆绑。 这是我的rollup.config.js: import {uglify} from 'rollup-plugin-uglify' import babel from 'rollup-plugin-babel' export default { input: "./src/index.js", external: ['react', 'react-dom'], output: { name: 'test-lib', format: "cjs", }, plugins: [ babel({ exclude: "node_modules/**" }), uglify(), ], }; 和我的package.json: { "name": "test-lib", "version": "1.0.0", "main": "dist/test-lib.min.js", "scripts": { "build": "rollup -c -o dist/test-lib.min.js" }, "author": "Behnam Azimi", "license": "ISC", "peerDependencies": { "react": "^16.9.0", "react-dom": "^16.9.0" }, "devDependencies": { "@babel/core": "^7.6.0", "@babel/preset-env": "^7.6.0", "@babel/preset-react": "^7.0.0", "rollup": "^1.21.4", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-uglify": "^6.0.3" } } 经过这些更改,npm link在我的ReactJS(Hooks)项目中真正发挥了作用。 请注意,这只是一个简单的 Rollup 配置来展示我的解决方案,您可以在配置中添加多种内容,例如热重载、样式加载器和许多其他插件。 仅在 package.json 的 react 部分(而不是 react-native)内设置 peerDependencies 和 dependencies 包。另外,对于本地开发(当您的包未包含在任何其他 React 项目中并且您想在本地运行它时),您可以使用 devDependencies 字段。 我在打字稿反应项目中解决了这个问题。 可能,当使用 npm link 时,请使用主应用程序项目和组件项目中的 react。 因此,在您的 package.json 中从 react 和/或 dependencies 中删除 devDependencies 检查答案:https://stackoverflow.com/a/62807950/5183591 我也有同样的问题。 就我而言,我开发了一些 UI 组件作为包,其中有一个包含 React 应用程序的示例文件夹,用于创建 React 应用程序。 问题是,当我使用 npm i ../ 将包安装到示例应用程序中时,它会将包中的所有文件安装到示例应用程序中,包括 node_modules 文件夹。由于我已经安装了 react 和 react-dom 作为对等依赖项,示例应用程序现在有两个不同的 React 副本。 从包中删除 node_module 文件夹并重新安装包再次解决了我的问题。


MVC ASP.NET Core Identity,创建登录、注册操作。 AuthController

公共类AuthController:控制器 { SignInManager _signInManager { 获取; } UserManager _userManager { 获取; } 角色管理器 public class AuthController : Controller { SignInManager<AppUser> _signInManager { get; } UserManager<AppUser> _userManager { get; } RoleManager<IdentityRole> _roleManager { get; } public AuthController(SignInManager<AppUser> signInManager, UserManager<AppUser> userManager, RoleManager<IdentityRole> roleManager) { _signInManager = signInManager; _userManager = userManager; _roleManager = roleManager; } public IActionResult Login() { return View(); } [HttpPost] public async Task<IActionResult> Login(string? returnUrl,LoginVM vm) { AppUser user; if (!ModelState.IsValid) { return View(vm); } if (vm.UsernameOrEmail.Contains("@")) { user = await _userManager.FindByEmailAsync(vm.UsernameOrEmail); } else { user = await _userManager.FindByNameAsync(vm.UsernameOrEmail); } if (user == null) { ModelState.AddModelError("", "Username or password is wrong"); return View(vm); } var result = await _signInManager.PasswordSignInAsync(user, vm.Password, vm.IsRemember, true); if (!result.Succeeded) { if (result.IsLockedOut) { ModelState.AddModelError("", "Too many attempts wait until " + DateTime.Parse(user.LockoutEnd.ToString()).ToString("HH:mm")); } else { ModelState.AddModelError("", "Username or password is wrong"); } return View(vm); } if (returnUrl != null) { return LocalRedirect(returnUrl); } return RedirectToAction("Index","Home"); } public IActionResult Register() { return View(); } [HttpPost] public async Task<IActionResult> Register(RegisterVM vm) { if (!ModelState.IsValid) { return View(vm); } var user = new AppUser { Fullname = vm.Fullname, Email = vm.Email, UserName = vm.Username }; var result = await _userManager.CreateAsync(user, vm.Password); if (!result.Succeeded) { foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } return View(vm); } var roleResult = await _userManager.AddToRoleAsync(user, Roles.Member.ToString()); if (!roleResult.Succeeded) { ModelState.AddModelError("", "Something went wrong. Please contact admin"); return View(vm); } return View(); } public async Task<IActionResult> Logout() { await _signInManager.SignOutAsync(); return RedirectToAction("Index", "Home"); } public async Task<bool> CreateRoles() { foreach (var item in Enum.GetValues(typeof(Roles))) { if (!await _roleManager.RoleExistsAsync(item.ToString())) { var result = await _roleManager.CreateAsync(new IdentityRole { Name = item.ToString() }); if (!result.Succeeded) { return false; } } } return true; } } } 所以,我在代码中搞乱了登录、注册和注销,现在这个 RoleManager 的事情让我摸不着头脑。我只是想为我的管理员用户提供一些额外的权力,但我有点不知道该怎么做。如果您能用简单的语言解释步骤或需要进行哪些更改来帮助我,那就太棒了。 我的目标是让管理员用户在我的系统中体验更好,您对此的建议非常有用。尝试了解 RoleManager 的事情以及如何为我的管理员用户提供更多能力。您直接的帮助可能会对我解决这个问题产生很大的影响! 定义管理员角色 创建管理员用户 更新注册流程: var roleResult =等待_userManager.AddToRoleAsync(用户,vm.IsAdmin? Roles.Admin.ToString() : Roles.Member.ToString()); 使用管理员角色: [授权(角色=“管理员”)] 公共 IActionResult AdminDashboard() { // 特定于管理的逻辑 } 5.提升管理能力: if (User.IsInRole("管理员")) { // 特定于管理的逻辑 } 中间件配置: services.AddIdentity() .AddRoles() .AddEntityFrameworkStores(); 7.创建角色方法: 公共无效配置(IApplicationBuilder 应用程序,IHostingEnvironment env) { // 其他中间件配置 // Create roles during application startup var authController = new AuthController(/* inject your dependencies here */); authController.CreateRoles().GetAwaiter().GetResult(); }


© www.soinside.com 2019 - 2024. All rights reserved.